day6爬虫流程整理

总结

  1. excel文件写操作

    import openpyxl
    
    # 1.获取工作簿对象(工作簿对应的就是一个excel文件)
    # 新建(默认有一个工作表)
    # work_book = openpyxl.Workbook()
    # 打开
    # work_book = openpyxl.load_workbook(文件路径)
    
    
    # work_book = openpyxl.Workbook()
    work_book = openpyxl.load_workbook('files/test2.xlsx')
    
    # 2.获取所有的表的表名
    all_names = work_book.sheetnames
    print(all_names)
    
    # 3.获取表
    # sheet = work_book['Sheet']
    
    # 4.新建表
    # 工作簿对象.create_sheet(表名, 表的下标)
    # work_book.create_sheet('学生表')
    # work_book.create_sheet('学生表2', 0)
    
    # 5.删除表
    # 工作簿对象.remove(表对象)
    # work_book.remove(work_book[表名])
    
    # 6.表重命名
    # sheet = work_book['学生表2']
    # sheet = work_book.active
    # sheet.title = 'Student'
    
    # 7.写入数据到单元格
    # 单元格对象.value   -   获取单元格中的内容
    # 单元格对象.value = 新值   -   修改单元格中的内容
    sheet = work_book['Student']
    
    # 1)获取单元格方法一
    # 工作表对象.cell(行号: int, 列号: int)
    cell1 = sheet.cell(1, 1)
    # 修改单元格中的内容
    # cell1.value = '姓名'
    
    cell2 = sheet['B1']
    # cell2.value = '年龄'
    
    # 清空单元格
    cell2.value = ''
    
    
    # 5.保存文件
    work_book.save('./files/test2.xlsx')
    
  2. excel文件读操作

    import openpyxl
    
    # 1.打开文件
    wb = openpyxl.load_workbook('files/test1.xlsx')
    
    # 2.获取工作表
    # sheet = wb['学生表']
    sheet = wb.active
    
    # 3.获取单元格
    # 1)获取单个单元格
    # sheet.cell(行号, 列号)    -  行号和列号都是从1开始的数字
    # sheet[位置信息]  - 位置信息是类似:'A1'、'B2'的行列信息,其中字母是列信息,数字是行号
    
    # 2)以行为单位获取单元格对象
    # 工作表.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_rows(2, 4, 1, 2)
    print(list(cells))
    
    # 3)以列为单位获取单元格对象
    cells = sheet.iter_cols(1, 4, 1, 4)
    print(list(cells))
    
    all_scores = sheet.iter_cols(4, 4, 2, 4)
    # print(list(all_scores))
    for score_cell in next(all_scores):
        print(score_cell.value)
    
  3. frame切换

    from selenium import webdriver
    
    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')
    
    # 2.切换frame
    b.switch_to.frame(box)
    
    print(b.page_source)
    
  4. 51job获取城市信息

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    url = 'https://www.51job.com/'
    b = webdriver.Chrome()
    
    b.get(url)
    
    input = b.find_element_by_css_selector('#kwdselectid')
    input.send_keys('数据分析')
    input.send_keys(Keys.ENTER)
    
    allcity = b.find_element_by_css_selector('.allcity')
    allcity.click()
    
    print(b.page_source)
    
    beijing = b.find_element_by_css_selector('.panel_lnp.panel_py.panel_ct2 .de.d3 tbody tr td em')
    print(beijing.text)
    beijing.click()
    
    sure = b.find_element_by_css_selector('#popop > div > div.but_box > span')
    sure.click()
    
  5. 多线程

    import time
    from datetime import datetime
    from threading import Thread
    # Thread类 - 线程类   Thread类的对象  -  子线程
    
    
    def download(name):
        print(f'{name}开始下载:{datetime.now()}')
        time.sleep(2)
        print(f'{name}下载结束:{datetime.now()}')
    
    
    # 1.在一个线程(主线程)中下载三个电影:消耗时间是6秒
    # download('肖申克的救赎')
    # download('霸王别姬')
    # download('阿甘正传')
    
    # 2.在三个子线程中分别下载三个电影
    # 1)创建线程对象
    t1 = Thread(target=download, args=('肖申克的救赎',))
    t2 = Thread(target=download, args=('霸王别姬',))
    t3 = Thread(target=download, args=('阿甘正传',))
    
    # 2)启动线程
    t1.start()
    t2.start()
    t3.start()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值