扒一个网页:
import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.read()
第一行:调用了urllib2库里边的urlopen方法,传入一个url,这个方法一般接收三个参数,如下:
urlopen(url, data, timeout)
第一个不用解释,data是访问url时要传送的数据,timeout是设置超时时间,后两个为选填,data默认为None,
第二行:返回的response对象有一个read方法,可返回获取到的网页内容。
构造Request:
与上面效果相同,但这样写更符合逻辑规范import urllib2 request = urllib2.Request("http://www.baidu.com") response = urllib2.urlopen(request) print response.read()
post和get数据传送:
post方式:
在此引入了urllib库,模拟登陆CSDN,当然是登不上去的,因为一些参数还没有设置,这个只是原理,import urllib import urllib2 values = {"username":"1016903103@qq.com","password":"XXXX"} data = urllib.urlencode(values) url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn" request = urllib2.Request(url,data) response = urllib2.urlopen(request) print response.read()
get方式:
import urllib import urllib2 values={} values['username'] = "1016903103@qq.com" values['password']="XXXX" data = urllib.urlencode(values) url = "http://passport.csdn.net/account/login" geturl = url + "?"+data request = urllib2.Request(geturl) response = urllib2.urlopen(request) print response.read()
设置headers:
这样在构建Request时传入headers请求,服务器就会识别为时浏览器发来的请求,并作出响应。import urllib import urllib2 url = 'http://www.server.com/login' user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = {'username' : 'cqc', 'password' : 'XXXX' } headers = { 'User-Agent' : user_agent } data = urllib.urlencode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) page = response.read()
另外,我们还有对付”反盗链”</