python爬虫实战,下载某可翻页网站的图片

本文介绍了如何使用Python爬虫下载一个可翻页论坛的图片。通过requests、OS和lxml库,首先获取图片链接,然后下载图片。论坛每页包含约10张图片,页面通过在URL中添加?page参数进行翻页。图片链接通过XPath提取,存储格式根据网站结构确定。文章提供了提取图片地址和下载图片的函数,并提出改进方向,如并行下载和使用代理IP。
摘要由CSDN通过智能技术生成

使用库:

  • requests
  • OS(用于图片保存)
  • lxml(用于使用xpath提取图片链接)

思路:

  1. 通过xpath获取图片链接
  2. 下载图片

目标网址:(由于网站性质,将域名改为xxx)

https://xxx.com/t/17652068

网站结构分析:
网站为论坛格式,其中,“17652068”为帖子标识号,每页约有10张左右希望提取的图片,论坛翻页通过改变链接实现,如:

第一页:https://xxx.com/t/17652068?page=1
第二页:https://xxx.com/t/17652068?page=2

如果页码越界,将会提供一个只有一张图片的相同网页。

图片存储格式:
利用F12审查元素得到,图片位于如下位置:
在这里插入图片描述
因为不太会xpath语法,这里直接通过改写HarlanHong的文章中提供的xpath语句(主要是修改了图片所存在的块(html应该是这么叫)的名称),写出:

$x("//div[@class='h-threads-img-box']/a/@href")
$x("//div[@class='h-threads-img-box']/a/img/@data-src")

并检验无误:
在这里插入图片描述
然后可以得到收集所有图片地址的函数:

def get_links(num, page = 1, end_page = None, links = []):
    while 1:
        url = 'https://xxx.com/t/{}?page={}'.format(num, page)
        r = requests.get(url).content  # 导入lxml库和html.fromStringh函数来解析html
        sel = html.fromstring(r)  # 提取h1标签,text()获取该标签下的文本
        link = sel.xpath("//div[@class='h-threads-img-box']/a/@href")
        links += link[1:]
        print('{}的第{}页已完成'.format(num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值