最新 详解如何模拟登录知乎 英文验证码以及中文倒立字(继上篇scrapy分析知乎

9/
开始更新:
废话不多讲,一样的直接入正题;
爬取知乎,需要登录;只要登录获得了,便可反复利用
那么首先说说如何最简单的登录知乎?看我的另一篇博文
接下来开始一步一步操作:
首先,第一步:直接 进行 “检查”; 获取到 “密码登录”的xpath元素(直接复制即可) 。
#切换登录change_login = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div[1]/div/form/div[1]/div[2]')#进行点击change_login.click()
Step 2. 直接“检查”到 账号以及密码框;
可以看到
然后直接用找到 对应输入框,然后利用进行传值 。这里为了避免以前登陆过,进页面会有存有的账号密码导致重复输入,所以先执行ctrl+A进行输入框内容的选中,再进行传值 。
这里手机号以,密码为例 ;如图,这里设置延时,为了得到更好的查看效果,为了速度可以不要 。
#可以设置延时 time.sleep(1)#采用ctrl+a 进行选中输入 进行覆盖 避免追加输入导致账号密码错误browser.find_element_by_name("username").send_keys(Keys.CONTROL+"a")browser.find_element_by_name("username").send_keys('13579246810')time.sleep(1)browser.find_element_by_name("password").send_keys(Keys.CONTROL + "a")browser.find_element_by_name("password").send_keys('admin123')time.sleep(1)
step3.账号密码输入完毕后,进行确定 。同样进行 “检查” 找到“确定”的xpath元素 。再进行click() ; 等待10s进行判断,这里等待10s是为了 假如登陆成功,需要一定时间进行加载页面;”
login = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div[1]/div/form/button')login.click()#这里如果直接登录成功,则等待10s等待跳转后的页面加载完成time.sleep(10)#如果是登录Falselogin_success=False
那么随机找到一个登陆成功页面的xpath元素,那么就可以判断是已登陆成功,反之False; 如找到如下元素div的xpath,如果存在,那么为True;
while not login_success:try:notify_ele=browser.find_element_by_class_name('Popover PushNotifications AppHeader-notifications')login_success=Trueexcept:pass
如果不存在,登陆失败,则pass继续操作,进行判断中/英文验证码
英文验证码:
中文同样的:
#判断英文验证码还是倒立字验证码try:english_captcha_element = browser.find_element_by_class_name('Captcha-englishImg')except:english_captcha_element = Nonetry:chinese_captcha_element = browser.find_element_by_class_name('Captcha-chineseImg')except:chinese_captcha_element = None
接下来就先识别英文二维码吧:
有三种打码方式 : 编码实现(-ocr) 识别率低 , 在线打码(云打码) ,人工打码(后两者识别率更高,通过平台提供的API),通常使用在线打码(也就是云打码)

最新 详解如何模拟登录知乎 英文验证码以及中文倒立字(继上篇scrapy分析知乎

文章插图
这里我们用 “云打码” 平台(比较好用的在线打码平台),进入官网,我们创建一个用户 以及 一个开发者账号(账号密码可设置为一样) 方便测试;关于为什么 需要创建两个账户,可以百度 。这里简要说一下 ,开发者通过平台给用户提供调用API,当用户在线打码成功,开发者会获得相应的分成利润 。
如,可以看到我的开发者用户,测试已经获取0.1的分成了 。
【最新 详解如何模拟登录知乎 英文验证码以及中文倒立字(继上篇scrapy分析知乎】