写在前面
前两天想爬知乎,发现用selenium模拟登录时出现了问题——点击登录按钮没反应。。。
无论是用webdirver模拟点击,还是自己手动点击,都无法跳转到首页。
后来发现大概是知乎识别出selenium了。把我们给反爬了。

解决办法
解决办法就是——用webdirver接管我们自己打开的浏览器,然后再进行登录操作。

具体的接管方法,这篇文章已经说得非常清楚了:https://www.cnblogs.com/HJkoma/p/9936434.html

具体步骤
在环境变量中PATH里将chrome的路径添加进去:
打开控制面板,点击“高级系统设置”

进入系统属性,点击下方“环境变量”

找到Path,点击“编辑”

在变量值中添加配置路径 C:\Program Files (x86)\Google\Chrome\Application(注意要与前面的路径用分号隔开)

一路点“确定”就ok了

在cmd中运行命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
1

这时,会打开一个浏览器。
然后我们回到pycharm,运行模拟登录知乎的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
browser = webdriver.Chrome(executable_path = 'D:\Documents\Downloads\chromedriver_win32\chromedriver.exe', options=chrome_options)

browser.get("https://www.zhihu.com/signin")
browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input").send_keys("用户名")
import time
time.sleep(3)
browser.find_element_by_css_selector(".SignFlow-password input").send_keys("密码")
browser.find_element_by_css_selector(
".Button.SignFlow-submitButton").click()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发现登录成功了!
登录异常次数多了,就会出现验证码。关于知乎的验证码破解欢移步我的这篇博文(还没写好)

结语
这个方法比较笨
但是我目前还没找到别的解决办法
欢迎大家提供其他的解决办法~

2019/1/17
今天在网上看到一个思路:http://www.site-digger.com/html/articles/20180821/653.html
————————————————
版权声明:本文为CSDN博主「尹银鱼」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42206477/java/article/details/86477446

发表评论

邮箱地址不会被公开。 必填项已用*标注