天猫店铺爬虫文档 ---> Pyppeteer
前言:将天猫店铺爬虫封装成一个产品,最终可以在数据库中读取任意店铺自动化爬取
一、Pyppeteer的使用 --> Document
-
Pyppeteer较Selenium的好处是可以注入JS来避免一些网站的识别,如淘宝,知乎
-
启动时的配置
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
-
修改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)
-
常用操作
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 防止超时报错
以上 如果有什么不懂的 欢迎通过公众号骚扰