使用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函数的作用:

  1. 遵守网站规则,许多网站有反爬虫机制,例如限制同一IP在一定时间内的请求次数。通过添加延迟可以模拟正常用户行为,降低触发反爬虫机制风险。
  2. 减轻服务器压力,短时间发送大量请求会给目标服务器带来巨大压力,甚至导致服务器崩溃。
  3. 数据采集的稳定性,采集数据时如果爬虫过于激进可能因为网路延迟、服务器错误等原因导致采集失败。适当延迟能提高数据采集的稳定性。
  4. 符合法律规定,某些地区对网络爬虫有明确法律规定,要求爬虫在采集数据时必须遵守特定的速率限制。

posted @ 2024-09-12 23:50  松鼠q  阅读(6)  评论(0编辑  收藏  举报