为了在进行爬虫的过程中不每访问一次请求就打开新的页面,使用无头浏览器的方式,但是无头浏览器会被想要爬取的网址识别并阻拦。当设置headless=False时就可以通过识别。
通过查阅发现,网站能够通过检测插件,语言等发现无头浏览器,因此使用stealth来解决这个问题,假装是正常浏览器在访问。
# -*- coding: UTF-8 -*-
import asyncio
from pyppeteer import launch
from pyppeteer import launcher
from pyppeteer_stealth import stealth
async def pyChrome():
if '--enable-automation' in launcher.DEFAULT_ARGS:
launcher.DEFAULT_ARGS.remove("--enable-automation")
browser = await launch(
headless=True, dumpio=True, userDataDir=r'./text',
)
web = await browser.createIncognitoBrowserContext()
page1 = await web.newPage()
# 重点部分,里面封装了能够防止识别的方法,即便设置headless=True也可以实现不打开浏览器就完成打开浏览器时的功能
await stealth(page1)
await page1.goto(con_url, {'waitUntil': ['load', 'networkidle0']})
await page1.close()
await page.close()
await browser.close()
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(pyChrome())