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_source
print(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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)