Python爬虫实战E03无序号翻页图文教程

2024-12-31阅读数:54
上一篇:Python爬虫实战N01User-Agent与Referer校验反爬图文教程
下一篇:Python爬虫实战E02带验证码的登录爬取图文教程

打开Python爬虫实战练习页面无序号翻页_E03_Spiderbuf,可以看到页面很简单,内容是《2021胡润中国500强》排行榜,总共有5页。点击一下翻页,发现浏览器地址栏中并没有出现以往翻页的页面,取而代之的是一串字符串。

在网页上右键 -> 网页源码,往下滚动查找翻页的HTML代码,或者在开发者工具(F12)直接通过光标选中页面翻页区域,得到以下的代码。

<nav aria-label="Page navigation">
    <ul class="pagination">
        <li><span>共5页</span></li>
        <li><a href="/playground/e03/2fe6286a4e5f">1</a></li>
        <li><a href="/playground/e03/5f685274073b">2</a></li>
        <li><a href="/playground/e03/279fcd874c72">3</a></li>
        <li><a href="/playground/e03/8a3d4d640516">4</a></li>
        <li><a href="/playground/e03/fbd076c39d28">5</a></li>
    </ul>
</nav>

翻页代码是固定的链接,这种情况也好处理。一般使用这种方式是为了避免直接通过数字直接遍历所有分页,必须爬取到最后一页才会出现新翻页链接,能够在一定程度上降低爬虫的访问频率。

html = requests.get(base_url, headers=myheaders).text
root = etree.HTML(html)
print(html)
# <li><span>共5页</span></li>
# <li><a href="./2fe6286a4e5f">1</a></li>
# <li><a href="./5f685274073b">2</a></li>
# <li><a href="./279fcd874c72">3</a></li>
# <li><a href="./8a3d4d640516">4</a></li>
# <li><a href="./fbd076c39d28">5</a></li>
ls = root.xpath('//ul[@class="pagination"]/li/a/@href')
print(ls)

完整示例代码:示例代码