1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 网络爬虫pyppeteer selenium模拟浏览器抓取数据

网络爬虫pyppeteer selenium模拟浏览器抓取数据

时间:2022-11-18 16:28:36

相关推荐

网络爬虫pyppeteer selenium模拟浏览器抓取数据

项目场景:

1、抓取数据时,响应状态码为412,即状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件。

2、加请求头所有参数,依旧返回412

问题描述

遇到的问题:

1、pyppeteer、selenium在无头模式下,返回无数据状态

2、抓取数据,返回错误数据状态

原因分析:

问题的分析:网站对模拟浏览器抓取有限制

无头模式下,需绕过检测,即程序中加入所需参数

解决方案:

解决方案:

1、selenium模拟浏览器抓取:

option.add_experimental_option('excludeSwitches', ['enable-automation'])

option.add_argument('--disable-blink-features=AutomationControlled') # 无头模式,防检测

2、pyppeteer模拟浏览器抓取:

await launch(# {"executablePath": browser_path, "ignoreHTTPSErrors": True, "headless": True, "dumpio": True,#"args": [# "--start-maximized",# "--no-sandbox",# # '--disable-blink-features=AutomationControlled' # 新版谷歌浏览器,绕过检测参数配置#]}

option = webdriver.ChromeOptions()option.add_argument('--headless')option.add_argument('--disable-blink-features=AutomationControlled') # 无头模式,防检测option.add_argument('window-size=1920x1080')option.add_argument('log-level=3')option.add_argument("--user-agent=*****")option.add_argument("--disable-dev-shm-usage")option.add_argument("--no-sandbox")option.add_argument("lang=zh_CN.UTF-8")option.add_argument('--disable-gpu')option.add_argument('--incognito')option.add_argument("--window-size=1920,1050") # 专门应对无头浏览器中不能最大化屏幕的方案option.add_experimental_option('excludeSwitches', ['enable-automation'])option.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(options=option) # 把参数配置设置到浏览器中driver.get(url)time.sleep(1)pageSource = driver.page_sourceprint(pageSource)

#browser = await launch(# {"executablePath": browser_path, "ignoreHTTPSErrors": True, "headless": True, "dumpio": True,#"args": [# "--start-maximized",# "--no-sandbox",# # '--disable-blink-features=AutomationControlled' # 新版谷歌浏览器,绕过检测参数配置#]}#)#page = await browser.newPage()#try:# await page.setUserAgent(# "*****")# await page.goto(url)# await page.waitFor(2000)# page_text = await page.content()# await browser.close()# print(page_text)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。