美文网首页Python和爬虫@IT·互联网程序员
Python爬虫系列(六)外国图库Unsplash图片自动化下载

Python爬虫系列(六)外国图库Unsplash图片自动化下载

作者: 致Great | 来源:发表于2017-04-30 01:17 被阅读219次

    再做一个网站,要找一些高清图片,然后同学推荐了这个网站:Unsplash 。但是每张图片下载要手动点,然后下拉加载更多图片,效率不高,所以自己写了爬虫程序,进行自动化下载图片,自己参考了下面这篇文章(很多地方有所改动)

    Python爬虫小白入门(五)PhatomJS+Selenium第二篇

    一、分析网站,找到图片的src地址

    因为这个网站和上一篇的360图库差不多,图片相关信息是通过js动态加载的,所以自己先观察了下network下的XHR,果然找到想要的信息,并且响应数据是我们容易处理的json格式,但是自己爬去的时候,请求被拒绝了。。。

    每次下拉请求10张图片的相关信息
    但是我们直接请求的话,是直接被拒绝的。。

    然后自己尝试获取网页源代码,然后找到img的源地址,通过分析发现,每张图片放在a标签里,class=“cV68d”,background-image的url地址就是图片的源地址。

    图片的位置

    所以大致思路是:首先通过的selenium+Chrome()  (ps:我用PhantomJS有bug过不去。)模拟浏览器下拉行为,然后获取网页源代码,通过xpath和正则表达式获取到图片的源地址,然后获取图片名称,并下载保存。

    二、程序代码及相关解释

    1、这次使用的模块有点多,主要是为了方便操作和下载图片

    程序需要用到的模块

    2、 驱动使用的Chrome,需要提前准备好。

    初始化构造函数

    2、使用execute_script()执行js脚本,实现浏览器下拉

    下拉操作

    3、获取a标签的style内容,然后获取到目标数据,最后执行保存图片方法

    这里提到一点就是:fina_src=urlparse(' '+ src).path.strip(),这里我用空格拼接一下的目的是为了能够正确得到图片的地址,否则解析的path内容不正确


    path的内容不正确

    url加上的空格之后,效果是下面


    正确的path内容

    (ps:这个调了好长时间,,头皮发麻)

    下载图片

    4、执行函数,这里设置下拉三次,下载的图片不是30张,而是500多,原因也很简单:每次下拉的高度是下拉到底部,一个窗口的高度,而加载10张图片只需下拉一点高度。

    过程有点慢。

    三、执行效果

    模拟下拉动作,然后下载
    大功告成

    源码:https://github.com/yanqiangmiffy/Unsplash

    相关文章

      网友评论

      • aa367c7dd13f:问一个问题,unsplash的图片都是可以下载的吗,用在图书装帧之类的地方会算侵权吗(刚上高中,刚刚开始钻研这些,很多都还不知道,见谅见谅)
        aa367c7dd13f: @致Great 好的谢谢!
        致Great:@蝈之 好像是侵权的,自己随便当作下壁纸没问题,当作商业用途的话、最好联系作者或者网站

      本文标题:Python爬虫系列(六)外国图库Unsplash图片自动化下载

      本文链接:https://www.haomeiwen.com/subject/tmpttxtx.html