python爬虫百度安全验证(python爬取百度)

http://www.itjxue.com  2023-04-07 22:49  来源:未知  点击次数: 

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等在起作用,百度会通过这些信息对搜索信息进行整理,用于生成大数据集(比如哪个区域的人偏爱查询哪些词之类的),你的机子没有这些信息,调用百度主页进行搜索就会有问题。

请参照以下代码

起调百度地图API

(责任编辑:IT教学网)

更多

推荐导航代码文章