Python爬虫实战爬取验证码

  1.破解验证码常见的三种方法:

  (1)把验证码下载到本地,手动输入进行破解

  (2)Tesseract光学识别模块:能够自动识别验证码,准确率不高,只能识别一些简单验证码

  代码测试

  pip install pytesseract

  pip install pillow

  # 转化为灰度图片

  img = img.convert('L')

  img.show()

  # 二值化处理

  threshold = 140

  table = []

  for i in range(256):

  if i < threshold:

  table.append(0)

  else:

  table.append(1)

  out = img.point(table, '1')

  out.show()

  img = img.convert('RGB')

  enhancer = ImageEnhance.Color(img)

  enhancer = enhancer.enhance(0)

  enhancer = ImageEnhance.Brightness(enhancer)

  enhancer = enhancer.enhance(2)

  enhancer = ImageEnhance.Contrast(enhancer)

  enhancer = enhancer.enhance(8)

  enhancer = ImageEnhance.Sharpness(enhancer)

  img = enhancer.enhance(20)

  (3)云打码平台:

  云打码

  2.下面是我们用第一种方法来破解验证码:把验证码下载到本地,手动输入进行破解

  

  前期准备工作:

  爬取网站:古诗文网站 https://www.gushiwen.org/

  开发环境:pycharm,python3.6

  抓包工具:fiddler抓包,抓取登录接口

  使用第三方模块:请求模块 requests,解析模块不bs4,

  流程思路:

  (1)首先明确我们要爬取的内容,准备好需要的开发工具和环境

  (2)第一步:我们要进行模拟登录古诗文网站遇到的验证码,使用requests模块进行模拟登录,同时我们要先找到验证码的链接,下载好验证码

  (3)第二步:登录发送的请求时候,我们手动输入下载好的验证码

  实战代码:

  首先在pycharm下导入我们需要的第三方模块:requests,bs4

  

  模拟登录页面的验证码图片,找到页面标签。然后解析定位,下载到本地

  

  模拟登录之前,首先先输入验证码。然后再发送登录请求。用的是requests模块,直接封装好表单数据

  

  运行函数:

  

  上面是截图,下面是源代码:

  #导入我们需要的第三方库

  import requests

  from bs4 import BeautifulSoup

  import urllib.request

  #封装好请求头

  headers = {

  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',

  }

  #下载登录页面的图片

  def download_code(s):

  url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'

  r = s.get(url=url, headers=headers)

  soup = BeautifulSoup(r.text, 'lxml')

  # 得到图片链接,

  image_src = 'https://so.gushiwen.org' + soup.find('img', id="imgCode")['src']

  # print(image_src)

  r_image = s.get(image_src, headers=headers)

  with open('code.png', 'wb') as fp:

  fp.write(r_image.content)

  # 查找表单所需要的两个参数

  __VIEWSTATE = soup.find('input', id="__VIEWSTATE")['value']

  __VIEWSTATEGENERATOR = soup.find('input', id="__VIEWSTATEGENERATOR")['value']

  return __VIEWSTATE, __VIEWSTATEGENERATOR

  #模拟登录

  def login(view, viewg, s):

  post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'

  # 提示用户输入验证码

  code = input('哥们.麻烦你输入验证码:')

  formdata = {

  '__VIEWSTATE': view,

  '__VIEWSTATEGENERATOR': viewg,

  'from': 'http://so.gushiwen.org/user/collect.aspx',

  'email': '1090509990@qq.com',

  'pwd': '123456',

  'code': code,

  'denglu': '登录',

  }

  r = s.post(url=post_url, headers=headers, data=formdata)

  with open('gushi.html', 'w', encoding='utf8') as fp:

  fp.write(r.text)

  def main():

  # 创建会话

  s = requests.Session()

  # 下载验证码到本地

  view, viewg = download_code(s)

  # 向post地址发送请求

  login(view, viewg, s)

  if __name__ == '__main__':

  main()

Python爬虫培训或学习过程中,需掌握的爬取验证码方法相关推荐

  1. Python爬虫: 单网页 所有静态网页 动态网页爬取

    Python爬虫: 单网页 所有静态网页 动态网页爬取 前言:所有页代码主干均来自网上!!!感谢大佬们. 其实我对爬虫还挺感兴趣的,因为我玩instagram(需要科学上网),上过IG的人都知道IG虽 ...

  2. Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  3. Python爬虫新手入门教学(十七):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)

    python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...

  5. python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频

    [Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...

  6. Python爬虫新手入门教学(二):爬取小说

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  7. Python爬虫新手入门教学(十三):爬取高质量超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  8. Python爬虫初级(十三)—— 水木社区论坛爬取实战

    欢迎关注公众号K的笔记阅读博主更多优质学习内容 上一篇文章:Python爬虫初级(十二)-- 新闻消息抓取实战 实战阶段一:分析首页大板块 URL 我们首先打开待爬取页面 -- 水木社区的首页:htt ...

  9. Python爬虫自学笔记(三)动态网页爬取

    现在很多网站用的是动态网页加载技术,这时候用前面的request库和BS4库就不能解决问题了,需要用新的办法. 打开网页,按F12或者右键弹出菜单里选择"检查",右侧会打开开发者工 ...

最新文章

  1. java基于http协议编程_Java中基于HTTP协议网络编程
  2. Fragment-FragmentMannager中的方法
  3. 打造政产学研新型研发机构 加速人工智能科研成果转化
  4. mysql not like 没用_PHP - 使用NOT LIKE时,mysql查询不起作用
  5. Interactive Data Display如何显示菜单?
  6. iview的select联动_render函数渲染的iview中的Select组件如何联动?
  7. UWP 手绘视频创作工具技术分享系列
  8. JanusGraph配置参考大全
  9. 孩子必听的数学家故事——笛卡尔
  10. 远程实时调试手机上的web页面
  11. 图片验证码有时会出现无法显示的问题
  12. MySQL卸载教程(详细)
  13. 天线越大越好吗_无线分享器解惑:天线 dBi 值越大越好?
  14. 结合python,给飞书(lark)群组发送自动化测试报告(保姆级)
  15. 【Semantic Embedding】: CDSSM(CLSM)模型
  16. 计算机软件扫描功能比较好,超高口碑的4款手机扫描软件,到底哪个效果好
  17. win7屏保后锁定计算机,win7系统设置电脑锁屏的操作方法
  18. 水泵控制(循环右移指令).mwp
  19. 一个低调的王者 - 谁是游戏类Dapp圈内最赚钱的团队?
  20. 图像算法三 —— 贝叶斯和朴素贝叶斯

热门文章

  1. Ubuntu系统查看内存信息
  2. 在物流行业,领导提拔你,第三看能力,第二看态度,第一看...
  3. MySQl 如何实现 FULL JOIN?
  4. 全球经济走势及我国制造业的发展方向
  5. 视频教程-PHP7文件目录函数库实战-PHP
  6. 【虚幻引擎】UE4/UE5 pak挂载
  7. 数据库原理与应用研究报告-在线救援物资求助系统
  8. Python EXCEL表格转图片、发送正文图片邮件
  9. 百度到底是哪国的公司
  10. ‘npm‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。