python版本:python3.7
在python中,可以使用urllib2来爬取网页。
urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。
它以urlopen函数的形式提供了一个非常简单的接口。
urllib2用一个Request对象来映射提出的HTTP请求。
在它最简单的使用形式中将用你要请求的地址创建一个Request对象,
通过调用urlopen并传入Request对象,将返回一个相关请求response对象,
这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。
import urllib.request as ur
req = ur.Request('http://www.lovejing.com')
response = ur.urlopen(req)
the_page = response.read()
print(the_page)
1.发送data表单数据
这个内容相信做过Web端的都不会陌生,
有时候你希望发送一些数据到URL(通常URL与CGI[通用网关接口]脚本,或其他WEB应用程序挂接)。
在HTTP中,这个经常使用熟知的POST请求发送。
这个通常在你提交一个HTML表单时由你的浏览器来做。
并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。
一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。
编码工作使用urllib的函数而非urllib2。
import urllib
import urllib.request as ur
url = 'http://www.someserver.com/register.cgi'
values = {'name': 'WHY',
'location': 'SDU',
'language': 'Python'}
data = urllib.parse.urlencode(values).encode(encoding='UTF8') # 编码工作
req = ur.Request(url, data) # 发送请求同时传data表单
response = ur.urlopen(req) # 接受反馈的信息
the_page = response.read() # 读取反馈的内容
print(the_page)
如果没有传送data参数,urllib2使用GET方式的请求。
GET和POST请求的不同之处是POST请求通常有"副作用",
它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。
Data同样可以通过在Get请求的URL本身上面编码来传送。
import urllib
import urllib.request as ur
data = {}
data['name'] = 'WHY'
data['location'] = 'SDU'
data['language'] = 'Python'
url_values = urllib.parse.urlencode(data)
print(url_values)
url = 'http://www.baidu.com/'
full_url = url + '?' + url_values
data = ur.urlopen(full_url, timeout=60)