1、打开网页

2、点击到账号密码登录

3、判断验证码是否出现

4、输入账号密码

5、对验证码图片下载

6、通过zheye对图片进行分析获取倒立文字的坐标

7、网页对图片储存缩放一半,坐标进行处理

8、通过move和click进行点击倒立文字坐标

9、登录

# -*- coding: utf-8 -*-
import os
import sys
from selenium import webdriver
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import scrapy
from mouse import move,click
import time
import pickle
from selenium.webdriver.common.keys import Keys
'''知乎破解倒立文字,登录'''
class ZhihuSpider(scrapy.Spider):name = 'zhihu'allowed_domains = ['www.zhihu.com']start_urls = ['https://www.zhihu.com/']def parse(self, response):passdef start_requests(self):from selenium.webdriver.chrome.options import Options'''解析英文验证码'''res_file = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'res')chrome_option = Options()chrome_option.add_argument("--disable--extensions")chrome_option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")browser = webdriver.Chrome(executable_path='D:\chromedriver_win32\chromedriver.exe',chrome_options=chrome_option)try:browser.maximize_window()except Exception as e:passbrowser.get('https://www.zhihu.com/signin')browser.find_element_by_xpath('//div[@class="SignFlow-tabs"]/div[2]').click()browser.find_element_by_xpath('//div[@class="SignFlowInput SignFlow-accountInputContainer"]/label/input').send_keys(Keys.CONTROL+"a")browser.find_element_by_xpath('//div[@class="SignFlowInput SignFlow-accountInputContainer"]/label/input').send_keys('17792926712')browser.find_element_by_xpath('//div[@class="SignFlow-password"]//input').send_keys(Keys.CONTROL+"a")browser.find_element_by_xpath('//div[@class="SignFlow-password"]//input').send_keys('123456')# browser.find_element_by_xpath('//div[@class="SignContainer-inner"]/form/button').click()# 有时验证码会提前弹出,需要判断是否需要点击提交等待弹出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 = Noneshow = Falseif chinese_captcha_element:text = chinese_captcha_element.get_attribute("src").replace('data:image/jpg;base64','')if 'null' not in text:show = Trueif english_captcha_element:text = english_captcha_element.get_attribute("src").replace('data:image/jpg;base64', '')if 'null' not in text:show = Trueif not show:move(756, 505)click()login_success = Falsewhile login_success:try:notify_ele = browser.find_element_by_xpath('//div[@class="AppHeader-inner"]/ul/li[2]/a/text()')login_success = Trueexcept:passtime.sleep(10)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 = Noneif chinese_captcha_element:ele_position = chinese_captcha_element.locationx_relative = ele_position["x"]y_relative = ele_position["y"]# 执行js,计算整个高度-上面TAB高度browser_navigation_panel_height = browser.execute_script('return window.outerHeight-window.innerHeight;')base64_text = chinese_captcha_element.get_attribute("src")import base64code = base64_text.replace('data:image/jpg;base64','').replace('%0A','')file_path = os.path.join(res_file, 'yzm_c.jpeg')if os.path.exists(file_path):os.remove(file_path)fh = open(file_path,'wb')fh.write(base64.b64decode(code))fh.close()# zheye解析中文验证码from zheye import zheyez = zheye()time.sleep(1)pt = z.Recognize(file_path)position_news = []if len(pt) == 2:position_news.append([pt[0][1]/2, pt[0][0]/2])position_news.append([pt[1][1]/2, pt[1][0]/2])else:position_news.append([pt[0][1]/2, pt[0][0]/2])# 循环点击倒立文字for position_new in position_news:print('x:{}'.format(x_relative+position_new[0]))print('y_relative:{}'.format(y_relative))print('browser_navigation_panel_height:{}'.format(browser_navigation_panel_height))print('position_new[1]:{}'.format(position_new[1]))# time.sleep(1)move(x_relative+position_new[0],y_relative+browser_navigation_panel_height+position_new[1])# move(x_relative+position_new[0],y_relative+browser_navigation_panel_height+position_new[1])click()time.sleep(5)browser.find_element_by_xpath('//div[@class="SignContainer-inner"]/form/button').click()# 鼠标点击move(756,542)click()cookies = browser.get_cookies()cookie_dict = {}for cookie in cookies:cookie_dict[cookie['name']] = cookie['value']return [scrapy.Request(url=self.start_urls[0], dont_filter=True, cookies=cookie_dict)]else:# 英文验证码处理pass# 通过读取cookies进行登录# cookie_file = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),#                            'cookies', 'zhihu.cookie')# cookies = pickle.load(open(cookie_file,'rb'))# cookie_dict = {}# for cookie in cookies:#     cookie_dict[cookie['name']] = cookie['value']# return [scrapy.Request(url=self.start_urls[0], dont_filter=True, cookies=cookie_dict)]'''获取cookie,并保存from selenium.webdriver.chrome.options import Optionschrome_option = Options()chrome_option.add_argument("--disable--extensions")chrome_option.add_experimental_option("debuggerAddress","127.0.0.1:9222")browser = webdriver.Chrome(executable_path='D:\chromedriver_win32\chromedriver.exe',chrome_options=chrome_option)browser.get('https://www.zhihu.com/signin')# browser.find_element_by_xpath('//div[@class="SignFlow-tabs"]/div[2]').click()# browser.find_element_by_xpath(#     '//div[@class="SignFlowInput SignFlow-accountInputContainer"]/label/input').send_keys(Keys.CONTROL+"a")# browser.find_element_by_xpath('//div[@class="SignFlowInput SignFlow-accountInputContainer"]/label/input').send_keys('17792926722')# browser.find_element_by_xpath('//div[@class="SignFlow-password"]//input').send_keys(Keys.CONTROL+"a")# browser.find_element_by_xpath('//div[@class="SignFlow-password"]//input').send_keys('123456')# # 鼠标点击# move(756,542)# click()# # 选择控件点击# browser.find_element_by_xpath('//div[@class="SignContainer-inner"]/form/button').click()# 获取cookiecookies = browser.get_cookies()pickle.dump(cookies,open(cookie_file,'wb'))cookie_dict = {}for cookie in cookies:cookie_dict[cookie['name']] = cookie['value']return [scrapy.Request(url=self.start_urls[0],dont_filter=True,cookies=cookie_dict)]'''

selenum模拟登陆知乎(重点倒立文字)相关推荐

  1. 爬虫实战3:模拟登陆知乎并爬取任意帖子数据

    ​      刚学爬虫时,看到一篇文章硬核破解知乎登陆,心潮澎湃,真男人!符合我的胃口!哼哧哼哧的立刻安排!   (半个小时过后)   似乎我是弱智?很多看不懂?(百度乱搜中-)恩还有种简单的?sel ...

  2. socket模拟http的登陆_python模拟登陆知乎(最新版)

    为啥要写这一篇文章呢? (主要是qq群内有人在模拟登陆知乎,一直不成功)然后我抓包看了下,发现知乎登陆页已经改版了,而且难度大大提高了. 开始抓包 首先内,还是打开知乎首页,然后输入账号密码,登陆(记 ...

  3. slenium模拟登陆知乎2020

    文章目录 引言 登录成功 解决方案 意外收获 参考资料 引言 之所以写这篇文章,主要是因为: 前面写了很多selenium爬虫相关的文章,帮到很多读者解决了不少问题 selenium爬虫门槛较低,对初 ...

  4. python爬虫设计在哪里_《python 爬虫教程 知乎》 怎样用Python设计一个爬虫模拟登陆知乎...

    <python 爬虫教程 知乎> 怎样用Python设计一个爬虫模拟登陆知乎 python 爬虫教程 知乎2020-09-23 01:45:13人已围观 怎样用Python设计一个爬虫模拟 ...

  5. python 登录知乎_python模拟登陆知乎(最新版)

    原因 为啥要写这一篇文章呢? (主要是qq群内有人在模拟登陆知乎,一直不成功)然后我抓包看了下,发现知乎登陆页已经改版了,而且难度大大提高了. 开始抓包 首先内,还是打开知乎首页,然后输入账号密码,登 ...

  6. python实用脚本 知乎_Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的文章,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  7. python爬虫模拟登陆知乎网

    自从暑假学了大概一个月左右的爬虫,开学之后就没怎么搞爬虫了,当时也就学到scrapy框架就放下了,大致了解了一下框架,不是太理解,但是在这之前本人的爬虫水平也仅仅局限于爬取简单页面,爬取动态页面也稍微 ...

  8. Scrapy 模拟登陆知乎--抓取热点话题

    工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了. Python 1 scrapy genspider zhihu 使用以 ...

  9. 利用cookie模拟登陆知乎

    我们知道一些网站是需要账号密码才可以登陆的,例如知乎.而利用requests库里的get方法的headers参数可以达到这个目的 首先在知乎的网页上登陆自己的知乎账号,利用chrome的开发者工具(F ...

最新文章

  1. DearGUI编写贪吃蛇之让蛇跑的方向受控制_最新
  2. 重学JavaScript深入理解系列(一)
  3. 虚幻填坑004:减少starter content占用空间,只保留使用的assets
  4. thinkPHP5.1.9 vendor 第三方库的使用
  5. 论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...
  6. 大数据时代--windows下spark的安装与配置教程
  7. 图片抓取_小小爬虫批量抓取微信推文里的图片
  8. 第五章 shell学习之文件的排序、合并和分割
  9. python基于混合多项式模型PCF实现数据曲线拟合
  10. 大文件上传NeatUpload简单用法nbsp;(…
  11. onload事件_图像onLoad事件+ Internet ExplorerJavaScript问题
  12. windows自带的压缩/解压缩(zip/unzip)功能-Powershell 的应用之一
  13. 如何写一篇学术研讨会级的论文
  14. Could not found global transaction xid
  15. Latex:大于等于号和小于等于号
  16. 文献检索与论文写作——学习笔记
  17. html怎么把图片做成椭圆形,html5 作图椭圆
  18. MFC+Opencv以图拼图
  19. win8 修改背景色为绿豆沙颜色
  20. 钛资本研究院:科技创投,ToB也性感

热门文章

  1. excel表格打印每页都有表头_office办公软件Excel表格的打印技巧,建议收藏
  2. 可以打开html文件的app,【iOS】跳转App以及用其他软件打开本地文件
  3. mybatis关联查询的嵌套使用
  4. java futuretask_java中Future与FutureTask使用与分析
  5. Sublime3安装emmet之后,按tab键没有反应?
  6. android 4k播放器开源项目,这15个Android开源库,只有经常逛Github的才知道!
  7. 艾永亮:十元店如何撑起173亿的营业额?
  8. Js向下取整、向上取整、四舍五入
  9. 程序员如何将一天变成28小时
  10. 两个无线路由器之间实现无线连接