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

来源:互联网 发布:上海牙周炎医院 知乎 编辑:程序博客网 时间:2024/06/10 14:49

再做一个网站,要找一些高清图片,然后同学推荐了这个网站: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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃了羊肉吃西瓜怎么办 吃了狗肉和绿豆怎么办 做的衣柜没有门怎么办 蒸馒头熟了会瘪怎么办 3dmax贴图太大了怎么办 嘴皮边缘颜色深怎么办 嘴巴周围肤色暗沉怎么办 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办 胶皮与海绵开了怎么办 安卓不支持flash了怎么办 看视频要加载flash怎么办 下水道管子铁皮破了怎么办 炸金花牌一样大怎么办 玩棋牌游戏输了怎么办 苹果7插耳机外放怎么办 出国种菠菜抓了怎么办 在菲做菠菜抓到怎么办 3串1中两个怎么办 微博账号封停怎么办 阴阳师账号被永久封停怎么办 寒刃2账号被禁用怎么办 输了好多钱我该怎么办 亲朋打鱼别处在玩怎么办 做糯米蛋的蛋清怎么办 水田地没耙地平怎么办 宝宝拉鸡蛋花样大便怎么办 电子琴伴奏区无旋律音怎么办 手机触摸屏摔坏了怎么办 手机充着电玩游戏卡怎么办? 4个月宝宝拉肚子怎么办