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