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

转自:python总结-处理Http请求(urllib2,urllib, cookielib)


 
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