本系列为自己学习爬虫的相关笔记,如有误,欢迎大家指正

处理登录表单

随着Web 2.0的发展,大量数据都由用户产生,这里需要用到页面交互,如在论坛提交一个帖子或发送一条微博。因此,处理表单和登录成为进行网络爬虫不可或缺的一部分。获取网页和提交表单相比,获取网页是从网页抓取数据,而提交表单是向网页上传数据。

在客户端(浏览器)向服务器提交HTTP请求的时候,两种常用到的方法是GET和POST。使用GET方法的时候,查询字符串(名称/值对)是在GET请求的URL中发送的,因为浏览器对URL有长度限制,所以GET请求提交的数据会有所限制。这里数据都清清楚楚地出现在URL中,所以GET请求不应在处理敏感数据时使用,如密码。

按照规定,GET请求只应用于获取数据,POST请求则用于提交数据。因为查询字符串(名称/值对)在POST请求的HTTP消息主体中,所以敏感数据不会出现在URL中,参数也不会被保存在浏览器历史或Web服务器日志中。表单数据的提交基本上要用到POST请求。

处理登录表单

处理登录表单可以分为两步:

  • (1)研究网站登录表单,构建POST请求的参数字典。
  • (2)提交POST请求。
import  requests
session = requests.session() #创建一个session对象 session对象会存储特定用户会话所需的属性和配置信息,这对我们后面在其中保存和操作cookies非常有意义。
post_url = 'http://xxx.xx.com'
agent = ''
headers = {'Host':'xxx.xx.com','Origin':'http://xxx.xx.com','Referer':'http://www.xxx.xx.com/test-login','User-Agent':agent
}
#这个要根据自己的需求来变更
postdata = {'pwd' :'123456','user' :'test','remember':'forever'
}login_page = session.post(post_url,data=postdata,headers=headers)
print(login_page.status_code)

状态码:

  • 303——重定向
  • 400——请求错误
  • 401——未授权
  • 403——禁止访问
  • 404——文件未找到
  • 500——服务器错误

处理cookies,让网页记住你的登录

使用cookie能够把登录状态记录下来,再次运行代码的时候可以直接获取之前的登录状态,从而不用重新登录。

import  requests
import http.cookiejar as cookielib #导入cookiejar库
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='cookies') #说明cookies所在的位置
post_url = 'http://xxx.xx.com'
agent = ''
headers = {'Host':'xxx.xx.com','Origin':'http://xxx.xx.com','Referer':'http://www.xxx.xx.com/test-login','User-Agent':agent
}
#这个要根据自己的需求来变更
postdata = {'pwd' :'123456','user' :'test','remember':'forever'
}login_page = session.post(post_url,data=postdata,headers=headers)
print(login_page.status_code)
session.cookies.save() #保存此次登录的cookies。

再使用的时候就加载保存的cookie即可

session = requests.session()
session.cookie = cookielib.LWPCookieJar(filename='cookies')
try:session.cookies.load(ignore_discard=True)
except:print('cookie未能加载')

如果没有出现“cookie未能加载”,就表示cookies已经加载成功了.

验证码的处理

验证码(CAPTCHA)是“Completely Automated Public Turing test totell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序,可以防止恶意破解密码、刷票、论坛灌水,以及黑客用特定程序暴力破解密码的方式进行不断的登录尝试。

在网络爬虫中,处理验证码主要有两种方式:

  • (1)人工输入处理。
  • (2)OCR识别处理。

处理验证码和普通输入框一样的,使用审查元素获取input框即可。

人工方法处理验证码

人工方法处理就是在爬虫程序运行的时候弹出一个验证码输入框,我们需要手动输入验证码。

手工输入方式比较传统,不进行代码展示。

OCR处理验证码

OCR(Optical Character Recognition,光学字符识别),也就是使用字符识别方法将形状翻译成计算机文字的过程。为了使用Python将图像识别为字母和数字,我们需要用到Tesseract库【pip install pytesseract】,它是Google支持的开源ocr项目。

from PIL import Image
import pytesseract
# 把彩色图像转化为灰度图像。通过灰度处理可以把色彩空间由RGB转化为HIS
im = Image.open('test.jpg')
gray = im.convert('L')
gray.show()
gray.save('test_gray.jpg')# 图片降噪
# 二值化处理。可以看到,验证码中文本的部分颜色都比较深,因此可以把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化
threshold = 150
table = []
for i in range(256):if i <threshold:table.append(0)else:table.append(1)
out = gray.point(table,'1')
out.show()
out.save('test_thresholded.jpg')
#使用Tesseract进行图片识别
th = Image.open('test_thresholded.jpg')
print(pytesseract.image_to_string(th))

微信搜一搜【梓莘】或扫描下方二维码交个朋友共同进步。文章持续更新中。目前在整理爬虫相关学习笔记,期待后续更多的更新.。

【爬虫】爬虫中登录与验证码处理相关推荐

  1. ASP.NET中登录页验证码的实现

    在做一个登录页时,我们通常需要设置验证码,防止非法人员通过其他手段非法登录.在做一个页面的验证码时,我们需要先建立一个Active的Web页面,来随机的产生数字和字母,同时把产生的数字存储在Sessi ...

  2. python爬虫分析模拟登录时会变的参数_Python爬虫之urllib模拟登录及cookie的那点事...

    在web  sprider crawl过程中,许多网站都需要登录后才能访问,一般如果我们不用爬虫框架的前提下,常规用的就两个库 ,urllib库和requests库,本文将用最基础的urllib库,以 ...

  3. Python爬虫过程中验证码识别的三种解决方案

    在Python爬虫过程中,有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是人阅读访问还是机器爬虫.验证码问题看似简单,想做到准确率很高,也是一件不容易的事情.为了更好学习爬虫,后续推文中将 ...

  4. python爬虫——利用超级鹰识别验证码并进行古诗网进行模拟登录

    目录 前言 一.超级鹰的注册 二.利用xpath解析登录页面的验证码图片 三.利用超级鹰识别获取验证码 四.模拟浏览器发送请求进行模拟登录 五.验证是否模拟登录成功 前言 本文章是利用python爬虫 ...

  5. iframe的src怎么携带参数_Java 爬虫遇到需要登录的网站,该怎么办?

    这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫.在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录 ...

  6. python成绩查询系统_Python爬虫实战:登录教务系统查成绩

    本文记录我用Python登录教务系统查询成绩的过程.手动输入验证码,简单获取成绩页面.后续将可能更新自动识别验证码登录查询 前期准备 本爬虫用到了Python的Requests库和BeautifulS ...

  7. Java爬虫——人人网模拟登录

    人人网登录地址:http://www.renren.com/ 此处登录没有考虑验证码验证码. 首先对登录方法进行分析 有两种方法. 一)在Elements中分析源码 发现登录点击后的事件是http:/ ...

  8. 爬虫入门经典(十七) | 图形验证码识别

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  9. Python爬虫——Cookie模拟登录

    文章目录 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 2.Handler处理器 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 现在很多网站需要用户成功登录 ...

最新文章

  1. python文本分类特征选择_文本挖掘之特征选择(python 实现)
  2. exe4j打包成可执行程序
  3. VSFTPD 服务器 3秒钟搭建
  4. python 三维图 背景_Python利用matplotlib生成图片背景及图例透明的效果
  5. 11.18 如何将界面注册到系统?
  6. 梯度下降优化算法总结
  7. 经常用everything对硬盘有伤害吗?
  8. ActionScript 游戏编程易错清单
  9. 尔雅 科学通史(吴国盛) 个人笔记及课后习题 2018 第七章 实验传统的兴起
  10. qq互联--qq登录例子 java版 源码_PHP版QQ互联OAuth示例代码分享
  11. Flask的jinjia2语句最详细容易理解教程
  12. git里面的文件怎么删不掉_git如何删除已经提交的文件夹
  13. IAR调试stm8的优化设置
  14. Charles 访问 HTTPS 链接不是私密连接 (完美解决)
  15. SQL server 将不等于hit的全部删除
  16. 使用PyTorch Geometric构建自己的图数据集
  17. 腾讯面试:MySQL事务与MVCC如何实现的隔离级别?
  18. 学习 Python 之 Pygame 开发魂斗罗(八)
  19. LCD RGB 控制技术 时钟篇
  20. 【笔记】python的传递实参:位置实参、关键字实参、默认值、等效的函数调用、避免实参错误

热门文章

  1. Halcon 使用标定好的内外参测量圆心距
  2. mybatis转义字符(大于、小于、大于等于、小于等于)
  3. 2015软件工程(大一下)职业规划第5次作业【个人成就故事】
  4. nlp系列(3)文本分类(Bert+TextCNN)pytorch
  5. [iPhone中级]iPhone团购信息客户端的开发 (二)
  6. Rest-Assured完整的测试例子
  7. 统计推断——假设检验——卡方检验
  8. 路由器AP 和 STA模式共存
  9. strcpy函数原型
  10. 载波幅度调制(PAM或ASK)