马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lb971216008 于 2016-8-23 21:46 编辑
前面说到了urllib2的简单入门,下面整理了一部分urllib2的使用细节。
1.Proxy 的设置 urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。 如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用代理。 新建test14来实现一个简单的代理Demo: file:///C:/Users/lb/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png 9.表单的处理 登录必要填表,表单怎么填? 首先利用工具截取所要填表的内容。
比如我一般用firefox+httpfox插件来看看自己到底发送了些什么包。
以verycd为例,先找到自己发的POST请求,以及POST表单项。
可以看到verycd的话需要填username,password,continueURI,fk,login_submit这几项,其中fk是随机生成的(其实不太随机,看上去像是把epoch时间经过简单的编码生成的),需要从网页获取,也就是说得先访问一次网页,用正则表达式等工具截取返回数据中的fk项。continueURI顾名思义可以随便写,login_submit是固定的,这从源码可以看出。还有username,password那就很显然了: 1. # -*- coding: utf-8 -*- 2. import urllib 3. import urllib2 4. postdata=urllib.urlencode({ 5. 'username':'汪小光', 6. 'password':'why888', 7. 'continueURI':'http://www.verycd.com/', 8. 'fk':'', 9. 'login_submit':'登录' 10. }) 11. req = urllib2.Request( 12. url = 'http://secure.verycd.com/signin', 13. data = postdata 14. ) 15. result = urllib2.urlopen(req) 16. print result.read()
10.伪装成浏览器访问
某些网站反感爬虫的到访,于是对爬虫一律拒绝请求
这时候我们需要伪装成浏览器,这可以通过修改http包中的header来实现 1. #… 2. 3. headers = { 4. 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' 5. } 6. req = urllib2.Request( 7. url = 'http://secure.verycd.com/signin/*/http://www.verycd.com/', 8. data = postdata, 9. headers = headers 10. ) 11. #...
11.对付"反盗链"
某些站点有所谓的反盗链设置,其实说穿了很简单,
就是检查你发送请求的header里面,referer站点是不是他自己, 所以我们只需要像把headers的referer改成该网站即可,以cnbeta为例: #... headers = { 'Referer':'http://www.cnbeta.com/articles' } #... headers是一个dict数据结构,你可以放入任何想要的header,来做一些伪装。 例如,有些网站喜欢读取header中的X-Forwarded-For来看看人家的真实IP,可以直接把X-Forwarde-For改了。
欢迎加入爬虫 |