Python爬虫实战S04分页参数分析及翻页爬取图文教程

2025-01-01阅读数:85
上一篇:Python爬虫实战S05网页图片的爬取及本地保存图文教程
下一篇:Python爬虫实战S03lxml库进阶语法及解析练习图文教程

打开Python爬虫实战练习页面分页参数分析及翻页爬取_S04_Spiderbuf,看到页面上的内容比较简单,右下角有几个分页导航。

点击一下分页试试翻页,留意一下浏览器地址栏的变化,就会发现就是在原有的URL地址后面加上了pageno这个参数。连续点击不同的页面都一样,而且这个参数的值与页码一致。

这一个练习主要是让大家熟悉一下如何找到网页上图片的链接,并把网页的图片下载下来写到本地图片文件。

在页面上右键 -> 点击显示网页源代码,发现HTML源码里面是没有图片的,这个是正常的现象。网页本身就是一堆字符串,经过浏览器的渲染才变成了我们看到的样子,这一堆字符串就是告诉浏览器如何去渲染这个页面的。

总共有5页,我们可以通过一个Python的for循环把这5个页面都爬取下来。但为了让代码有更强的适应性,就应该使用动态读取总页数的方式作为for循环的区间。

base_url = 'https://www.spiderbuf.cn/playground/s04?pageno=%d'

myheaders = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36'}

# 取页数
html = requests.get(base_url % 1, headers=myheaders).text
root = etree.HTML(html)

lis = root.xpath('//ul[@class="pagination"]/li')
# 取出 共5页 这个内容
page_text = lis[0].xpath('string(.)')
# 通过正则表达式提取 共5页 中的数字
ls = re.findall('[0-9]', page_text)

max_no = int(ls[0])

for i in range(1, max_no + 1):
    print(i)
    url = base_url % i
    print(url)
    html = requests.get(url, headers=myheaders).text
    print(html)

内容的解析比较简单,通过xpath的相对路径语法就能提取出来,与前面的练习相同,这里就不啰嗦了。

完整示例代码:示例代码