python总结——处理Http请求(urllib2,urllib, cookielib)

2016-05-10  橙子 

 

1、 最简单的方法使用urllib2

import urllib2

response = urllib2.urlopen('http://python.org/')

html = response.read()

 

2、使用Reuest

HTTP是基于请求和响应的。urllib2 就可以用来处理这种HTTP请求。

urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

通过Request可以添加发送数据和headers

 

urllib和urllib2 区别:

1、urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。

2、urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。

 

 

利用urllib2  发送 Get请求:

 

import urllib2
req = urllib2.Request(' http://item.jd.com/885987.html ')
response = urllib2.urlopen(req)
the_page = response.read()

 

 

利用urllib2 发送 POST请求:

import urllib
import urllib2
 
url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }  
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

 

 

添加Headers:模拟浏览器。在采集网页信息的时候,经常需要伪造报头来实现采集脚本的有效执行。

 

import urllib
import urllib2
 
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

 

 

利用cookielib、urllib2模拟登录;

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib 模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。

import urllib

import urllib2

import cookielib

 

#此处url已经做了修改

lgurl='http://erp.XX.com/newHrm/Verify.aspx'

cj = cookielib.CookieJar()

cookie_handler=urllib2.HTTPCookieProcessor(cj)

 

hds = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'}

 

#data内容可以使用浏览器F12或Firebug查看fromdata或参数

 

data={"Name":"XXXX",

      "Password":"XXXXXX",

      "Logon":"登  录",

}

 

dt=urllib.urlencode(data)

req=urllib2.Request(url=lgurl,data=dt,headers=hds)

opener = urllib2.build_opener(cookie_handler)

resp = opener.open(req)

page=resp.read()

print page

349°|3499 人阅读|0 条评论
登录 后发表评论