天猫淘宝知乎爬虫神器 -- Pyppeteer

天猫店铺爬虫文档 ---> Pyppeteer

前言:将天猫店铺爬虫封装成一个产品,最终可以在数据库中读取任意店铺自动化爬取

一、Pyppeteer的使用 --> Document

  1. Pyppeteer较Selenium的好处是可以注入JS来避免一些网站的识别,如淘宝,知乎

  2. 启动时的配置

    browser = await launch({'headless': True, 'args': ['--no-sandbox', '--user-data-dir=D:\job\pypeteer\_temp'],'dumpio': True}            ,'executablePath':'D:\\job\\spider_for_tb_search\\TMspider\\auto_crawl_ids\\chrome-win32\\chrome.exe')
    # 其中
    #   headless:True/False
    #   --no-sandbox 沙箱环境 必须
    #   --user-data-dir 如果出现 Unable to remove user data 表明你没有权限删除临时目录,应该自定义目录
    #   dumpio 对于淘宝必须设置 不然程序调用subprocess.Popen打开chrome之后stderr,stdout没有输出重定向,然后累积多了就卡住了。
    # executablePath 指定现有chrome执行路径 可跳过下载
    page.setJavaScriptEnabled(enabled=True) # 渲染JS
    page.evaluate(js1) # 执行js

     

  3. 修改connection.py中的43行,不然会报Session closed Most likely the page has been closed

    self._ws = websockets.client.connect(
    # self._url, max_size=None, loop=self._loop) # 注释
    # modify by jaho 新增下面这句
    self._url, max_size=None, loop=self._loop, ping_interval=None, ping_timeout=None)

     

  4. 常用操作

    1. page.type('id/class','value',{'delay': time })
    2. page.evaluate("""js代码,可在浏览器中执行通过在复制过来""")
    3. await page.waitFor(2000) # 等待2秒
    4. await page.waitForNavigation() # 等待页面跳转
    5. await page.goto(url) # 当前页面跳转到链接
    6. await page.screenshot({'path': './get_pid.png'}) # 截屏
    7. f_cat = await page.xpath('xpath') # 此处获取到的是一个列表
       link = await (await f_cat[0].getProperty('href')).jsonValue()
       content = await (await f_cat[0].getProperty('textContent')).jsonValue()
    获取自定义属性时 xpath写到 `/@data-size` 然后获取 textContent 即可
    8. page.keyboard.press('Enter')
    # 其他的可以查看上面的Document
    9. goto(url,{"timeout":0},{'waitUntil': 'networkidle0'})  # 将timeout设置为0 防止超时报错
    以上 如果有什么不懂的 欢迎通过公众号骚扰

                                                                天猫淘宝知乎爬虫神器 -- Pyppeteer_第1张图片

你可能感兴趣的:(Python,Jaho)