具体 就是我用selenium访问知乎 然后想搜索某篇文章 提示 似乎出了点什么 问题
代码在这里
#-*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import ChromeOptions
import os
import json
import time
def browser_initial():
#导入避免被发现是selenium的工具
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
browser = webdriver.Chrome(executable_path='../chromedriver.exe',options=option)
goal_url = 'https://www.zhihu.com/'
#未携带Cookies
browser.get('https://www.zhihu.com/')
return goal_url, browser
def log_ZHIHU(browser,goal_url):
# 从本地读取cookies
with open('ZhiHu_cookies.txt', 'r', encoding='utf8') as f:
listCookies = json.loads(f.read())
for cookie in listCookies:
cookie_dict = {
'domain': '.zhihu.com',
'name': cookie.get('name'),
'value': cookie.get('value'),
'path': '/',
'httpOnly': False,
'secure': False
}
browser.add_cookie(cookie_dict)
browser.maximize_window()
#测试用搜索
browser.refresh() #刷新网页
return browser
def Seracr(browser):
Seracr_Input=browser.find_element_by_class_name('Input')
Text=input("输入你想搜索的文章的内容")
Seracr_Input.send_keys(Text)
time.sleep(5)
Seracr_Button=browser.find_element_by_class_name('Button')
Seracr_Button.click()
if __name__ == '__main__':
tur = browser_initial()
bro=log_ZHIHU(tur[1],tur[0])
Seracr(bro)
之前解决了问题忘了写答案了,现在补上一下
解决思路就是通过使用一个已经打开了的浏览器,来避免知乎发现是使用的selenium模块
添加如下代码即可
option = ChromeOptions()
option.debugger_address ="127.0.0.1:9222"
browser = webdriver.Chrome(executable_path='chromedriver.exe的路径',options=option)
#需要注意的是要使用 popen 来运行命令 如果使用 system 会出错
os.popen('chrome.exe --remote-debugging-port=9222 --user-data-dir="Chrome的路径"')
解决方法来自https://blog.csdn.net/qq254271304/article/details/103493969这位大佬的博客
我试过添加请求头 但是依然不行 ,不知道是什么原因,有没有大佬能帮我看看,谢谢啦
经过对使用selenium和正常访问获得的源码进行对比,发现是知乎检测到了本次访问是selenium,解决办法还在学习中,解决以后会写在此贴下面
好像selenium走的是知乎的api。请求头有个x-zse-86,被这块拦截了。我也遇到了,但是特别奇怪,一样的配置,把headless模式取消了就好了
https://bot.sannysoft.com/ 正在根据这个来调正自己的headless参数
请问题主的知乎爬虫成功了吗,可以发一下代码吗