Urllib 是 Python 的标准库,它提供了一系列用于处理 URL 的函数和类,包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。
request:它是最基本的HTTP请求模块,可以用来模拟发送请求。只需要给库方法传入URL以及额外的参数,就可以模拟实现请求过程了。
error:异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行修正。
parse:一个工具模块,提供了许多URL处理方法,比如拆分、解析、合并等。
robotparser:主要是用来识别网站的robots.txt文件,判断哪些网站可以爬哪些网站不可以爬,其实用得比较少。
代码实现
#第一个爬虫程序
# 使用urllib
from urllib.request import urlopen
url ='http://www.baidu.com/'
# 发送请求,并将结果返回resp
resp = urlopen(url)
print(resp.read().decode())
在以上示例中,我们使用 urlopen()
函数发送了一个 HTTP 请求,并获取了响应。然后,我们使用 read()
函数读取了响应的内容,并使用 decode()
函数将其转换成 UTF-8 编码的字符串。最后,我们打印了响应的内容。
执行结果:
Response对象
# Response 请求响应对象的使用
from urllib.request import urlopen
url ='http://www.baidu.com/'
# 发送请求,并将结果返回resp
resp = urlopen(url)
# 返回数据
print(resp.read())
# 为了判断是否要处理请求的结果
print(resp.getcode())
# 为了记录访问记录,避免2次访问,导致出现重复数据
print(resp.geturl())
# 响应头的信息,渠道里面有用的数据
print(resp.info())
Request对象
动态列表获取user-agent
# Response 请求响应对象的使用
from urllib.request import urlopen,Request
from random import choice
url ='http://www.baidu.com/'
user_agent_list=[
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 OPR/45.0.2552.898'
]
# 推荐使用
headers = {
'User-Agent': choice(user_agent_list)
}
req = Request(url,headers=headers)
# 发送请求,并将结果返回resp
resp = urlopen(req)
print(resp.getcode())
安装插件,pip install fake-useragent
使用 UserAgent()方法
# Response 请求响应对象的使用
from urllib.request import urlopen,Request
from fake_useragent import UserAgent
ua = UserAgent()
url ='http://www.baidu.com/'
# 推荐使用
headers = {
'User-Agent': ua.chrome
}
req = Request(url,headers=headers)
# 发送请求,并将结果返回resp
resp = urlopen(req)
print(resp.getcode())