学用 python 也有 3 个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,
写过在 discuz 论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码
识别的脚本,本来想写 google music 的抓取脚本的,结果有了强大的 gmbox,也就不用写
了。
这些脚本有一个共性,都是和 web 相关的,总要用到获取链接的一些方法,再加上 simplecd
这个半爬虫半网站的项目,累积不少爬虫抓站的经验,在此总结一下,那么以后做东西也就不
用重复劳动了。
1.最基本的抓站
import urllib2
content = urllib2.urlopen('http://XXXX').read()
2.使用代理服务器
这在某些情况下比较有用,比如 IP 被封了,或者比如 IP 访问的次数受到限制等等。
import urllib2
proxy_support = urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
content = urllib2.urlopen('http://XXXX').read()
3.需要登录的情况
登录的情况比较麻烦我把问题拆分一下:
3.1 cookie 的处理
import urllib2, cookielib
cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
content = urllib2.urlopen('http://XXXX').read()
是的没错,如果想同时用代理和
cookie
,那就加入
proxy_support
然后
operner
改为
opener = urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)
3.2 表单的处理
登录必要填表,表单怎么填?首先利用工具截取所要填表的内容。
比如我一般用 firefox+httpfox 插件来看看自己到底发送了些什么包
评论0