urllib和urllib2常用方法
来源:互联网 发布:淘宝如何修改收货地址 编辑:程序博客网 时间:2024/05/22 17:06
在写爬虫时常常用法一些方法,这里我简单做一下归纳
一部分:访问服务器
1.html=urllib2.urlopen("http://www.baidu.com")打开网页,中间包含了一个request请求
2.content=html.read()将上面内容打开网页内容读取下来
3.request = urllib2.Request(url, values, headers) 发送特定请求,post请求,values和headers均是字典,但是values需要编码,而headers不需要编码
4.html=urllib2.urlopen(request)和1的内容基本相似
5.urllib.urlencode(values)使用request发送请求之前还需要将数据进行编码,注意这个是urllib而不是urllib2
6.urllib2.ProxyHandler()设置代理服务其进行访问网站,用处不用多说
二:异常处理
1.urllib2.URLError访问网页不存在
2.HTTPError是上面异常子类,报错时会显示各种状态吗,如404,401
根据经验,父类一般写在子类下面,看下面代码
三:cookie使用
ccokie:Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据,urllib2可以保存我们的cookie数据,因为cookies一般是是保存在浏览器的,这里urllib2充当浏览器功能
1.opener,urlopen()是一个默认的opener,当需要使用cookie时则需要新建opener,可以实现模拟登陆服务器功能
2.cookielib功能非常强大CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。他们之间的关系是CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
3.将cookieJar获取cookie功能,cookie变量值是保存在下面例子的cookie变量中的
#coding=utf-8
import urllib2
import cookielib
cookie=cookielib.CookieJar()
hander=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(hander)
response=opener.open("http://www.baidu.com")#打开网页后才能拥有cookie值
for item in cookie:
print "Name= "+item.name
print "value= "+item.value
4.强cookie值保存在文件中,保存的cookie是经过格式化的,如果将上面的name和value写在文件里会很乱
这时候要使用FileCookieJar()子类MozillaCookieJar
#coding=utf-8
import urllib2
import cookielib
filename="C:\Users\Administrator\Desktop\wanlei\wanleicookie.txt"
cookie=cookielib.MozillaCookieJar(filename)
hander=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(hander)
response=opener.open("http://www.baidu.com")
cookie.save(ignore_discard=True,ignore_expires=True)
save函数参数ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中 cookies已经存在,则覆盖原文件写入。
5.从cookie文件夹在cookie
#coding=utf-8
import urllib2
import cookielib
cookie=cookielib.MozillaCookieJar()
cookie.load("C:\Users\Administrator\Desktop\wanlei\cookie.txt")
req=urllib2.Request("http://www.baidu.com")
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response=opener.open(req)
print response.read()
6.下面是个例子,登陆我们学校的服务器
def login():
number="2014241177"
pwd="*********"
data={"email":email,"passworld":pwd}
#将post消息化成可以让服务器编码的方式
post_data=urllib.urlencode(data)
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
headers={"User-agent":"Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.1)"}
website="http://myportal.sxu.edu.cn/login.portal"
req=urllib2.Request(website,post_data,headers)
content=opener.open(req)
print content.read()
login()
http://python.jobbole.com/81359/
- urllib和urllib2常用方法
- urllib和urllib2
- urllib和urllib2
- python中urllib和urllib2不同的调试方法
- python中urllib和urllib2不同的调试方法
- python的urllib和urllib2
- python中的urllib和urllib2
- [python]urllib与urllib2的常用函数
- Python常用标准库 --- urllib与urllib2
- urllib & urllib2
- urllib和urllib2的区别和使用
- urllib和urllib2区别和常见用法
- urllib 和 urllib2 的哪些个事
- python urllib2和urllib的区别
- 补充python的urllib和urllib2
- [python]-urllib2和urllib模块使用
- urllib 和urllib2之间的区别
- Python:urllib 和urllib2之间的区别
- 操作系统与网络实现 一
- base64加密原理及作用
- Android 监控软键盘状态
- IOS @符号
- Dockerfile编写
- urllib和urllib2常用方法
- GridView 行动画
- Android判断权限被限制
- android studio运行时报错the selected device is incompatible
- HDU-2089-数位DP-不要62
- java手机号归属地验证
- 关于enq: TX - allocate ITL entry的问题分析
- C++ STL算法系列1---count函数
- 【大渣】【多维KMP】奶牛阵列