模拟用户登录脚本,手工输入验证码
今天某友人有个需求,希望能够登录到某网站,然后抓取一些资料回来。登录这里最麻烦的就是验证码,虽然这个网站验证码不复杂,但是看了下网上对于破解验证码的介绍,感觉还是挺麻烦的-_-!~。
我这个需求不需要每天定时跑,只要进去抓一次就好,于是乎采用人工输入验证码的方式。
先将验证码下载到本机,然后程序保持会话的情况下等待用户手工输入验证码,用户看完下载的验证码数字后,输入使脚本执行登录。
脚本代码如下,有兴趣的可以试试:
#!/usr/bin/env python
# encoding: utf-8
import urllib,urllib2,httplib,cookielib,os
IMGPATH = “”
#存验证码函数
def saveValidateCode(bin,path):
print path
f = open(path,”wb”)
f.write(bin)
f.close()
def main(codeurl,loginurl):
cookie=cookielib.CookieJar()
cj=urllib2.HTTPCookieProcessor(cookie)
request=urllib2.Request(codeurl)
opener=urllib2.build_opener(cj)
c = opener.open(request)
bincontent= c.read()
#存验证码为1.bmp
saveValidateCode(bincontent,IMGPATH.join([”1.bmp”]))
print “请输入验证码”
imgcode=raw_input()
usedata = {’user_name’:'用户名’,'password’:'密码’,'validatecode’:imgcode}#输入登录表单字段
loginrequest=urllib2.Request(loginurl)
c = opener.open(loginrequest,urllib.urlencode(usedata))#登录
bincontent = c.read()
if __name__ == ‘__main__’:
main(’验证码的url’,'登录提交地址’)
Tags: Python
8月 9th, 2008 at 1:09 上午
这个很有用啊,python抓取看来还是很爽啊.