【Python模拟登录与验证码识别】

之前在用Python爬取前程无忧的招聘职位时,用到了模拟登录的知识点,这里就简单地列一下相关的知识点,同时列一下目前对验证码识别的一点解决方法

一、首先简单描述下爬取职位的流程。
1、首先模拟登录
2、在搜索页面搜索某一职位,抓包得出该get报文的形式,得出的职位会包含多个页面,所以我们需要抓取共包含了几个页面,并对多个页面进行分别抓取、
3、对每个职位,进行职位名称,简介,地名,薪资,公司,公司规模,职位信息,公司福利等相关信息的爬取,需要用到多个正则去匹配

二、首先说一下模拟登录,这里用到的是requests
脚本如下:

先request 发出一个post报文,带上登录的用户名和密码,以及head头,post会返回一个html对象,该对象包含此次登陆的cookie
之后,发送其他报文时,只需要在发送的报文中添加cookies=html.cookies即可带上cookies,从而在服务器端完成对登陆的认证。
hea = {‘Host’:’my.51job.com’,
‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0’,
‘Referer’ : ‘http://www.51job.com/‘,
‘Accept-Language’:”zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3”,
‘Accept-Encoding’:”gzip, deflate”}
url = ‘http://my.51job.com/my/passport_login.php
data ={
‘passport_loginName’:’**‘,
‘passport_password’:’*’,
‘from_domain’:’www.51job.com’
}
loginhtml = requests.post(url,data = data,headers = hea,verify=False)

url2 = ‘http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=010000&industrytype=32&issuedate=9&providesalary=06&keyword=测试工程师&keywordtype=2&lang=c&stype=2&workyear=99&cotype=99&degreefrom=99&jobterm=01&companysize=99&fromType=1’

head1 = {‘Host’:’search.51job.com’,
‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0’,
‘Referer’ : ‘http://search.51job.com/jobsearch/advance_search.php?stype=2‘,
‘Accept-Language’:”zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3”,
‘Accept-Encoding’:”gbk,gzip, deflate”}
data1 = {
‘stype’:’2’,’lang’:’c’,’fromType’:’1’,’keywordtype’:’2’,
‘keyword’:’测试’,’jobarea’:’010000’,’funtype’:”,’industrytype’:’32’,
‘cotype’:’99’,’workyear’:’99’,’providesalary’:’06’,’companysize’:’99’,
‘degreefrom’:’99’,’jobterm’:’01’,’issuedate’:’09’,’searchname’:”“,’email’:”“

}
scorehtml = requests.get(url2,headers = head1,verify=False,cookies = loginhtml.cookies)

hh=scorehtml.text.encode(scorehtml.encoding)
dd=open(‘job.txt’,’wb’)
dd.write(hh)
dd.close()

二、说一下验证码识别:
在这一个脚本中没有涉及到验证码的识别,但在很多时候都会用到。

这里利用到pytesser和pillow(win7 64位)
text = pytesser.image_file_to_string(fname)
会得到相应的验证码的txt,然后对该text做一些处理,如回车,空格替换之类的,即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值