打开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的相对路径语法就能提取出来,与前面的练习相同,这里就不啰嗦了。
完整示例代码:示例代码