python 爬虫小试牛刀(二)

430 阅读1分钟

第一篇使用了find CSS 选择器爬取了前100名医院的数据,今天使用request-html的xpath方法自动分页下载高清美女图。

一 分析网页元素 在这里插入图片描述

发现整个feed流是div(class =TypeList)包裹的一个Table,img 在a标签里面,先下载一个图片在本地观察下,你会发现图片是缩略图,只要有些开发经验的人都知道,这是最基础的优化方法,详情通常是高清图,我们对比下URL

缩略图 kr.shanghai-jiuxin.com/file/2021/0… 原图 kr.shanghai-jiuxin.com/file/2021/0…

我们会发现缩略图只多了一个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']

三 爬取结果 在这里插入图片描述