python网络爬虫学习2

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)

 

你可能感兴趣的:(python网络爬虫学习2)