好久没有写爬虫了,之前只是止步于爬取静态网页,于是准备找个简单的动态网页进行爬取,在学长的建议下,进军花瓣网。

首先在爬取图片之前肯定要对网页源码进行分析


这里可以使用chrome的F12开发人员工具,很简单就找到了图片的url,这不就直接可以开始爬取了么2333

但是事实并不是这样,我使用requests.get获取网页源码后,发现和我看到的网页源码跟不就不是一个东西

之后根据网上资料查询,发现获取的其实是json格式的一大串数据。这时候开启开发人员工具,然后选择network,选择XHR,你开始往下拖动,会发现每次网页加载就会出现新的XHR文件


上面画红线的都是有图片内容的一次加载图片的XHR文件,点击第一个,再选择preview,打开pins


这里面就是一次加载的20张照片的json格式信息,点开第0个,观察里面信息


其实这里需要的只是每一张图片的pin_id和key

pin_id是用来让脚本持续获得新的图片,读者可自行观察下每次刷新出的包含20张图片的那个XHR文件网站是由

http://huaban.com/explore/miantiao/(最基础网站) + ?jb67d549(这个不清楚,但是不影响,因为并没有值)&max=891511322(每20组图片第一张pin_id)&limit=20&wfl=1(后面这两个是固定的)


这里可以知道,第一组照片最后一个pin_id就是下一组网站url组成中的max

key是用来下载图片时使用,可以在网页源码中找到,图片的url格式是

http://img.hb.aicdn.com/ + d094c0bbdfa62c4d45dac35f4f8c99d9eaa3649cd2da-AAz022_(这就是key,当然这个不是第一张图片的key)+ fw236

可以直接使用urllib.request.urlretrieve直接下载图片

附上源码

这个爬虫针对于花瓣网很多网页都可以直接进行图片下载,只需要更换下最前面的url

文章里可能有些地方说的不够专业,我是以我自己对这些的理解写下的,如果有问题谢谢大家提醒我。

最后附上美食: