例子:
importurllib2
response= urllib2.urlopen("http://www.baidu.com")
printresponse.read()
•urlopen(url, data, timeout)
–第一个参数url即为URL
–第二个参数data 是访问URL 时要传送的数据
–第三个timeout是设置超时时间
–返回response对象
•read 方法,可以返回获取到的网页内容
例子:
importurllib2
request= urllib2.Request("http://www.baidu.com")
response= urllib2.urlopen(request)
printresponse.read()
•上面的urlopen参数可以传入一个request 请求(其实就是一个Request类的实例)
Http定义了不服务器交互的不同方式
––GET[获取/查询]
•GET 方式是直接以链接形式访问,链接中包吨了所有的参数
––POST[更新]
•POST把提交的数据则放置在是HTTP包的包体中
––PUT[增加] 不DELETE[删除] <略>
例子(POST):
––import urllib
––import urllib2
––values = {"username":“zhangsan@gmail.com","password":“xxx"}
––data = urllib.urlencode(values)
––url="https://passport.csdn.net/account/login?xxx=yyyy"
––request = urllib2.Request(url,data)
––response = urllib2.urlopen(request)
––print response.read()
Headers设置
––User-Agent : 部分服务器戒Proxy 会通过该值来判断是否是浏览器发出的请求
很多网页不允许非浏览器访问,爬虫的时候要伪装成浏览器,就通过User-Agent来设置。
––Content-Type : 在使用REST 接口时,服务器会检查该值,用来确定HTTP Body 中的内容该怎样解析。
––application/xml :在XML RPC,如RESTful/SOAP 调用时使用
––application/json:在JSON RPC 调用时使用
––application/x-www-form-urlencoded:浏览器提交Web 表单时使用
Urllib不urllib2之 间的区别
––urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你丌可以伪装你的User Agent字符串等
––urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因
Urllib中的urlencode函数 ,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串
例子:
importurllib
importurllib2
url='http://www.zhihu.com/login'
user_agent='Mozilla/5.0 (compatible; MSIE 5.5; Windows NT)' values = {'username' :‘Lee', 'password' : 'XXXX' }
headers= { 'User-Agent' : user_agent}
data =urllib.urlencode(values)
request= urllib2.Request(url, data, headers)
response= urllib2.urlopen(request)
page =response.read()