第一篇使用了find CSS 选择器 爬取了前100名医院的数据,今天使用request-html 的 xpath 方法自动分页下载高清美女图。
一 分析网页元素
发现整个feed流是div (class =TypeList)包裹的一个Table,img 在a标签里面,先下载一个图片在本地观察下,你会发现图片是缩略图,只要有些开发经验的人都知道,这是最基础的优化方法,详情通常是高清图,我们对比下URL
缩略图
https://kr.shanghai-jiuxin.com/file/2021/0317/small22f2d96cb7211c4f936d12165ade275f.jpg
原图
http://kr.shanghai-jiuxin.com/file/2021/0317/22f2d96cb7211c4f936d12165ade275f.jpg
我们会发现缩略图只多了一个small 小的单词、还好规律比较简单,要不就麻烦了。
二 脚本代码
# coding=UTF-8
from requests_html import HTMLSession
import urllib.request
import time
#链接网页站点
session = HTMLSession()
page = 1
#先爬取两页数据
while page <= 2:
url = 'https://www.umei.cc/bizhitupian/meinvbizhi/'+ str(page) + '.htm'
page += 1
r = session.get(url)
data = r.html.xpath("//div[@class='TypeList']/ul/li/a/img")
#获取feed流标题
#content = r.html.xpath("//div[@class='TypeList']/ul/li/a/span/text()")
for items in data:
smallImgUrl = items.find("img",first=True).attrs['src']
#保存高清图片,去掉url里的small就是原图
bigImgUrl = smallImgUrl.replace("small","")
t = int(round(time.time() * 1000)) # 毫秒级时间戳
path = '/Users/lsr/Documents/GJProject/py/girls/' + str(t) + ".jpg"
urllib.request.urlretrieve(bigImgUrl,path)
核心代码
#根据TypeList找到整个列表节点,然后根据路径提取所有img
data = r.html.xpath("//div[@class='TypeList']/ul/li/a/img")
#循环遍历数组data,提取img的scr属性值。
smallImgUrl = items.find("img",first=True).attrs['src']
三 爬取结果