使用urllib向喜马拉雅网发送GET请求获取小说页面的HTML文档
爬取喜马拉雅女频小说快穿分类的前3页html源代码
目标url: https://www.ximalaya.com/category/a3_b5163_c11304/
第2页:https://www.ximalaya.com/category/a3_b5163_c11304/p2/
第3页:https://www.ximalaya.com/category/a3_b5163_c11304/p3/
...
第n页(n≥2):https://www.ximalaya.com/category/a3_b5163_c11304/pn/
利用for循环爬取多个网页的html源代码
from urllib.request import Request, urlopen
from time import sleep
for page in range(1, 4):
# 构造url
if page == 1:
url = 'https://www.ximalaya.com/category/a3_b5163_c11304/'
else:
url = f'https://www.ximalaya.com/category/a3_b5163_c11304/p{page}/'
# 创建Request对象
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'}
req = Request(url, headers=headers)
# 发送GET请求
resp = urlopen(req)
# 获取响应内容
print(resp.read().decode())
# 休眠
sleep(5)
sleep函数的作用:
- 遵守网站规则,许多网站有反爬虫机制,例如限制同一IP在一定时间内的请求次数。通过添加延迟可以模拟正常用户行为,降低触发反爬虫机制风险。
- 减轻服务器压力,短时间发送大量请求会给目标服务器带来巨大压力,甚至导致服务器崩溃。
- 数据采集的稳定性,采集数据时如果爬虫过于激进可能因为网路延迟、服务器错误等原因导致采集失败。适当延迟能提高数据采集的稳定性。
- 符合法律规定,某些地区对网络爬虫有明确法律规定,要求爬虫在采集数据时必须遵守特定的速率限制。