📜  urllib python (1)

📅  最后修改于: 2023-12-03 14:48:14.415000             🧑  作者: Mango

Python的urllib模块

Python标准库提供了urllib模块,它用于处理各种URL(Uniform Resource Locator)。

urllib的组成部分
urllib.request

这是最重要的子模块,它定义了打开URL的函数和类。这个模块的主要功能是提供一个高级别别的接口来处理URL的请求和处理以及传输结果。该库允许你发送HTTP / 1.1请求,并带有各种头信息(例如User-Agent,Referer,Cookies等),以及像POST这样的数据 / 文件上传。

urllib.error

此子模块定义了异常。通常情况下,如果发生HTTP错误,urllib仅生成HTTPError。URLError是HTTPError的父类。由于URLError是HTTPError的父类,因此您可以通过更快地捕捉URLError来捕获所有错误。

urllib.parse

这个模块主要是解析URL。主要功能是定义了URLs的结构,即协议,域名,端口,路径等。 urlparse函数解析出url中的各个部分并返回一个含有6个部分的tuple。

urllib.robotparser

当我们对某个网站进行爬取时需要遵循robot协议,其代表了robots.txt文件里的内容(即该站点允许爬虫访问的内容)。

urllib的使用
获取网页的源代码

可以用urllib.request模块提供的urlopen()函数来打开一个网页并读取里面的内容。代码如下:

import urllib.request

url = 'http://www.baidu.com/'

response = urllib.request.urlopen(url)
content = response.read()
print(content)
向网站发送信息

urllib提供了URL编码功能,可以使用urlencode()函数,将键值参数转换为URL编码的参数。

import urllib.request
import urllib.parse

url = 'http://www.example.com/login.php'
values = {'username': 'example', 'password': 'password'}
data = urllib.parse.urlencode(values)
binary_data = data.encode('utf-8')
req = urllib.request.Request(url, binary_data)
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))
爬取网页并保存到本地
import urllib.request

url = 'http://www.example.com/sample.pdf'
local_file = 'example.pdf'
urllib.request.urlretrieve(url, local_file)
代理设置
import urllib.request

proxy_support = urllib.request.ProxyHandler({'http': 'http://127.0.0.1'})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
response = urllib.request.urlopen('http://www.example.com')
print(response.read().decode('utf-8'))
结语

以上是Python urllib模块的使用介绍,希望这些内容可以对您有所帮助。