使用库:
- requests
- OS(用于图片保存)
- lxml(用于使用xpath提取图片链接)
思路:
- 通过xpath获取图片链接
- 下载图片
目标网址:(由于网站性质,将域名改为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