健康一贴灵,专注医药行业管理信息化

尝试python 爬虫新工具playwright

playwright是微软发布的一款自动化测试工具,需要 Chromium 浏览器的支持; 

1、安装playwright

      pip install --upgrade pip

  pip install playwright 

2、安装浏览器驱动文件(安装过程稍微有点慢)

python -m playwright install

3、录制

使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本.-o 参数my.py就是保存的PY 文件;

  python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com

import xlwt
# 导入sync_playwright方法
from playwright.sync_api import sync_playwright
# 定义run()方法 
def run(playwright):
    # 调用playwright的chromium创建浏览器实例,脚本运行需要首先打开浏览器实例
    # 如果不设置为 False,默认是无头模式启动浏览器,我们看不到任何窗口
    browser = playwright.chromium.launch(headless=False)
    # 创建context对象,context运行资源是单独隔离的,可以理解为轻量级的浏览器实例
    context = browser.new_context()
    # 返回page对象,新建页面
    page = context.new_page()
    # 加载豆瓣网页面
    page.goto("https://movie.douban.com/")
      # 使用CSS选择器选定电影榜单位置
    #names = page.query_selector_all("#billboard > div.billboard-bd > table > tbody > tr > td > a")
    # 使用xpath选择器获取
    names = page.query_selector_all("//*[@id='billboard']/div[2]/table/tbody/tr/td/a")
      # 新建列表  用于存储电影名字和链接
    listName = []
    # 因电影榜单数据都为<tr><td>样式,遍历每一条样式
    for name in names :
        # 获取a节点中的电影名字
        content = name.text_content()
        # 获取a节点中的电影链接
        link = name.get_attribute("href")
        # 将每行字符串追加到列表中
        listName.append((content,link))
        print(content,link)
    print(listName)
  # 创建wordbook对象
    
    workbook = xlwt.Workbook(encoding = 'utf-8')
    # 创建工作表
    worksheet = workbook.add_sheet('豆瓣电影TOP10')
    # 设置工作表的表头,write(行,列,值)
    worksheet.write(0, 0, label="豆瓣电影TOP10")
    worksheet.write(2, 0, label="名称")
    worksheet.write(2, 1, label="链接")
    # 设置单元格宽度
    worksheet.col(0).width = 4000
    worksheet.col(1).width = 10000
    for i,items in enumerate(listName):
        print(i,items)
        # 将获取到的items写入excel中    write(行,列,值)
        worksheet.write(i+3, 0, items[0])
        worksheet.write(i+3, 1, items[1])
    #     保存工作表
    workbook.save('Excel_test.xls')
    page.close()
    context.close()
    browser.close()
#调用sync_playwright方法,返回浏览器上下文管理器,赋值为p
with sync_playwright() as playwright:
    run(playwright)

参考:(86条消息) playwright教程 (一)适合小白_小白白学爬虫的博客-CSDN博客



posted @ 2023-01-16 08:42  一贴灵  阅读(364)  评论(0编辑  收藏  举报
学以致用,效率第一