python爬虫百度安全验证(python爬取百度)
python爬验证码
1.找地址
首先,我们要找到这个网站生成验证码的地址,这个地址我们可以通过查看他的源代码来实现。
1.找地址
首先,我们要找到这个网站生成验证码的地址,这个地址我们可以通过查看他的源代码来实现。
就以某大学教务网为例,这个教务网的模板很多学校都在采用:
我就截取表单的验证码部分即可。
td?align="center"?rowspan="3"?
img??id="imgCode"?src="../sys/ValidateCode.aspx"?
onclick="changeValidateCode(this)"?alt="单击可更换图片!"?
style="CURSOR:?pointer;"
br看不清,则单击图片!?????????????????????????????????
/td123456123456
这里就可以知道,地址就是../sys/ValidateCode.aspx
组合一下地址就是
也就是我们等一下要用到的地址了。
我们可以查看一下那个网页。
2.处理图片
去查看了一下那个地址
果不其然,都是乱码,因为验证码分为两种。
1)直接处理成JPG/GIF/PNG或者其他格式,然后直接读取到一个图片地址。
2)接收用户触发,然后生成,再直接处理成图像,不读取到一个图片地址。
我们这里是第二种,我们要自己来读取他,到本地,再手动输入验证码。
#?-*-?coding:?utf-8?-*-
import?urllib2
#验证码的处理#
#验证码生成页面的地址#
im_url?=?''
#读取验证码图片#
im_data?=?urllib2.urlopen(im_url).read()
#打开一个Code.PNG文件在D盘,没有的话自动生成#
f=open('d:\\Code.png','wb')
#写入图片内容#
f.write(im_data)
#关闭文件#
f.close()1234567891011121312345678910111213
这里包括两个部分:
1)打开那个生成验证码图片的页面,读取
2)将读取到的内容,保存成图片,下载到本地
我们这里的地址是可以随便写的,保存在你想保存的地方。
到这里我们就完成了验证码的一小部分。
by–LoDog
希望能帮到你!
如何python爬虫识别验证码
在用爬虫爬取网站数据时,有些站点的一些关键数据的获取需要使用账号登录,这里可以使用requests发送登录请求,并用Session对象来自动处理相关Cookie。
另外在登录时,有些网站有时会要求输入验证码,比较简单的验证码可以直接用pytesser来识别,复杂的验证码可以依据相应的特征自己采集数据训练分类器。
以CSDN网站的登录为例,这里用Python的requests库与pytesser库写了一个登录函数。如果需要输入验证码,函数会首先下载验证码到本地,然后用pytesser识别验证码后登录,对于CSDN登录验证码,pytesser的识别率很高。
python 爬虫,关于验证码的问题。输入验证码才能搜索。
#给你个例子参考?验证码请求一次就变了
#!/usr/bin/python??
#coding=utf-8??
import?requests
import?urllib??
import?urllib2,hashlib,md5
from?BeautifulSoup?import?BeautifulSoup
import?cookielib
def?_md5(password):
????md5?=?hashlib.md5()?
????md5.update(str.encode(password))
????psw?=?md5.hexdigest()
????return?psw
url?=?''
req?=?urllib2.Request(url)
res_data?=?urllib2.urlopen(req)
res?=?res_data.read()
output_file?=?open('1.jpg',?'wb')??
output_file.writelines(res)??
output_file.close()
verifycode?=??res_data.headers['Set-Cookie'].split(';')[0]
verifycode?=?verifycode.replace('verifycode=','')
filename?=?res_data.headers['Content-disposition'].split(';')[1].strip()
exec(filename)
cookiejar?=?cookielib.CookieJar()
opener?=?urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
vidcode=?raw_input(u"请输入验证码(在本路径?1.jpg):?")?
data?=?{'user_login':"lovesword85@yeah.net",
????????'isMd5':"1",
????????'user_pwd':_md5('love123456'),
????????'verifycode':vidcode,
????????'url':""}
url?=?''
data?=?urllib.urlencode(data)
headers?=?{'Content-Type':?'application/x-www-form-urlencoded',?'X-Requested-With':?'XMLHttpRequest',?'Cookie':?'verifycode={0};'.format(verifycode)}
request?=?urllib2.Request(url,data,headers)
response?=?opener.open(request)
print?'-------result-------------'
print?response.read()
print?'-------headers-------------'
print?response.headers
print?'-------cookies-------------'
for?cookie?in?cookiejar:
????print?cookie
使用python抓取百度搜索结果时不成功,怎么回事?
百度搜索有专门的接口,使用相应的API接口调用吧。你这直接调用它的主页,需要解决很多问题的。
这段代码访问的是百度主页,这里头不仅仅只是表面上的这些参数在起作用,还有cookie,session等在起作用,百度会通过这些信息对搜索信息进行整理,用于生成大数据集(比如哪个区域的人偏爱查询哪些词之类的),你的机子没有这些信息,调用百度主页进行搜索就会有问题。
请参照以下代码