Day6_爬虫流程整理

Day6_爬虫流程整理

excel写操作

  1. 获取工作簿对象(工作簿对应的就是一个excel文件)
  • 新建或者打开一个
import openpyxl
work_book = openpyxl.Workbook()
work_book = openpyxl.load_workbook('./file/student.xlsx')
  1. 获取所有表的表名
all_names = work_book.sheetnames
  1. 获取表对象
sheet = work_book[all_names[0]]
  1. 新建表
  • 工作簿对象.create_sheet(表名,表的下标) - 下标可省略,表示放在最后
work_book.create_sheet('出师表')
  1. 删除表
  • 工作簿对象…remove(表对象)
work_book.remove(work_book['出师表2'])
  1. 表重命名
sheet = work_book['出师表']
sheet = work_book.active
sheet.title = 'Student'
  1. 写入数据到单元格
  • 单元格对象.value - 获取单元格的值

  • 单元格对象.value = 值 - 修改单元格的值

    1. 获取单元格方法一
    • 工作表对象.cell(行号,列号)
    1. 获取单元格方法二
    • 工作表对象[‘字母+数字’] - 字母表示列数,数字表示行数
  • 单元格对象.value = ’ ’ - 清空单元格

  1. 保存文件
  • work_book.save(’./file/student.xlsx’)

excel读操作

  1. 打开文件
import openpyxl
wb = openpyxl.load_workbook('file/student.xlsx')
  1. 获取工作表
sheet = wb['出师表']
sheet = wb.active
  1. 获取单元格
  • 获取单个单元格

    sheet.cell(行号,列号) - 行号和列号都是从1开始的数字

    sheet[位置信息] - 位置信息是类似:‘A1’,'B2’的行列信息,其中数字是行信息,字母是列信息.

  • 以行为单位获取单元格数据

    工作表.iter_rows(最小行号,最大行号,最小列号,最大列号) - 返回的是一个迭代器

# 第一行到第四行,从第一列到第四列,以行的数据作为一个列表为列表中的一个元素
cells = sheet.iter_rows(1, 4, 1, 4)
print(list(cells))
# 第四行,有数据的列返回一个数据
row_4 = sheet.iter_rows(4, 4)
print(list(row_4))
  • 以列为单位获取单元格对象
cells = sheet.iter_cols(1, 4, 1, 4)
print(list(cells))
  • 遍历单元格
all_scores = sheet.iter_cols(4, 4, 2, 4)
for score_cell in next(all_scores):
    print(score_cell.value)

selenium设置选项

  1. 创建设置选项
from selenium import webdriver
from selenium.webdriver import ChromeOptions

options = webdriver.ChromeOptions()
  1. 添加选项参数
  • 取消测试环境
options.add_experimental_option('excludeSwitches', ['enable-automation'])
  • 取消图片加载(提高爬虫效率)
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
b = webdriver.Chrome(options=options)
b.get(url)
print(b.page_source)

frame切换

url = 'https://mail.163.com/'
b = webdriver.Chrome()
b.get(url)
"""
有时候会遇到这样的网页:一个网页对应的html标签嵌套了其他的html标签
(前端如要要实现嵌套功能,必须要将被嵌套的html放在iframe标签中),
如果需要爬取网页内容在嵌套的html里面,需要先让浏览器中选中内容嵌套的html.
(浏览器对象默认选中的是最外面的html标签)
"""
  1. 获取提供html标签的iframe标签
box = b.find_element_by_css_selector('#loginDiv>iframe')
  1. 切换frame
b.switch_to.frame(box)
print(b.page_source)

多线程技术

  • 一个进程默认有一个线程,这个线程叫主线程,其他的线程需要创建,且叫子线程

  • 如果一个Python程序需要子线程需要手动创建线程类Thread的对象

  • Thread类 - 线程类 Thread类的对象 - 子线程

from threading import Thread
# 1.创建线程对象
# 线程对象 = Thread(target=函数,args=(参数))
# 2.启动线程
# 线程对象.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值