先上张图片:

首先打开网址:https://www.pexels.com/,然后下来会发现下面的图片是慢慢的加载出来的,也就是通过Ajax请求得到的。在搜索框中输入关键字:beauty,打开F12,刷新,选中XHR,然后一直下拉下拉:

会发现左侧中的URL只有一个page是在发生变化的,在通过对URL中参数的分析我尝试的将URL中的参数js和format去掉,构造出类似于:https://www.pexels.com/search/beauty/?page=2
其中page代表的是页数是会发生变化的,然后复制到浏览器中可以打开图片,改变page的值也没有问题。
https://www.pexels.com/search/beauty/?page=2为例,在浏览器中打开,再打开F12刷新,切换到Preview选项卡:

这里面就有当前页面一张张图片的信息,我们可以通过请求这个页面,将相关图片的链接解析出来,就可以拿到我们想要的图片了。
我们打开其中一张美女图片,点击右侧的下载按钮,页面进行跳转:

从浏览器中发现图片的地址为:
https://static.pexels.com/photos/220423/pexels-photo-220423.jpeg
这个与上图中的 data-pin-media 属性的值很像有没有,多打开几张大图重复这个过程真是的图片的高清地址是将data-pin-media中的images替换为static即可。
下面就可以开始写代码了:
打算使用PyQuery库进行解析,练习一下这种用法:

import requests
from requests.exceptions import RequestException
from pyquery import PyQuery as pqkeyword='beauty'
headers={'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'accept-encoding':'gzip, deflate,sdch,br','cookie':'__cfduid=d3e43ad7f4bb07152deb3e9b4ca571b271505889614; locale=en; _ga=GA1.2.127776053.1505890636; _gid=GA1.2.783458515.1505890636; _gat=1','user-agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}def get_index(url):response=requests.get(url,headers=headers)try:if response.status_code==200:return response.textreturn Noneexcept RequestException:return Nonedef parse_index(html):doc=pq(html)links=doc('.photos .photo-item a img')for link in links:# title=link.attr('alt').replace(',','')url=link.attr('data-pin-media').replace('images','static').split('?')[0]yield urldef main(page):url = 'https://www.pexels.com/search/'+keyword+'/?page='+str(page)html=get_index(url)if html:urls=parse_index(html)print(urls)if __name__=='__main__':main(1)

运行这个程序,没有跑起来,发生报错:
没有attr这个属性,还有

Google一下:

发现PyQuery的写法好像有问题,小白就是这样经常在一个基础的地方踩上坑,于是:
url=link.attr(‘data-pin-media’).replace(‘images’,’static’).split(‘?’)[0],改成:url=pq(link).attr(‘data-pin-media’).replace(‘images’,’static’).split(‘?’)[0]
可以跑起来了。
然后就是保存图片:

def download_img(url):response=requests.get(url)try:if response.status_code==200:return response.contentreturn Noneexcept RequestException:return Nonedef save_image(content):path_name='{0}/{1}.{2}'.format(os.getcwd(),md5(content).hexdigest(),'jpg')if not os.path.exists(path_name):with open(path_name,'wb') as f:f.write(content)f.close()def main(page):url = 'https://www.pexels.com/search/'+keyword+'/?page='+str(page)html=get_index(url)if html:urls=parse_index(html)for url in urls:print('正在下载:%r'%url)content=download_img(url)save_image(content)print('下载完成:%r'%url)time.sleep(3)

运行结果如下:

但是这个下载速度实在是蛋疼的很啊(谁让这个图片这么大呢),开了多进程也一样,而且一开始程序一直卡着我一直以为自己的代码有什么问题跑不起来了,瞎捉摸了老半天也找不出原因,后面去洗澡了,洗完后发现下载了几张图片下来了:

所以我在想要是能写个下载进度条就好了,可以方便查看下载的进度,特别是对于这种大图片的下载,等以后学习了,可以再做些修改。

Python爬虫入门-python之爬取pexels高清图片相关推荐

  1. Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸

    来源:公众号[杰哥的IT之旅] 作者:阿拉斯加 ID:Jake_Internet 如需获取本文完整代码及 LOL 壁纸,请为本文右下角点赞并添加杰哥微信:Hc220088 获取. 一.背景介绍 随着移 ...

  2. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  3. python利用bs4爬取外国高清图片网站

    python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...

  4. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  5. python按关键字爬取必应高清图片

    通过查询前人的博客,发现必应可通过url按关键字查找图片: https://www.bing.com/images/async?q=查询关键字&first=图片编号&count=图片数 ...

  6. 简易爬虫教程爬取4K高清图片

    1.1 网址 # 谷歌浏览器http://www.netbian.com/weimei/ 1.2 查看网页源代码 # 1 直接获取会遇到防火墙,添加verify=False去掉安全认证# 2 resp ...

  7. selenium、requests爬取新浪微博高清图片

    文章目录 案例介绍 step1:导入必要的包,模拟浏览器打开新浪微博首页 step2:登录微博账号,进入艾漫数据的微博主页,搜索"全部艺人活跃粉丝榜" step3:获取目标图片的u ...

  8. python爬虫教程网-python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  9. python爬虫入门教程:爬取网页图片

    在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的.而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程: 准备工作 语言:python IDE:py ...

最新文章

  1. Hibernate中通过annotaion配置SQLServer的存储过程
  2. 7kyu Exes and Ohs
  3. Ghost文件封装说明
  4. 几张图可以理解GC JVM调优的内容
  5. java 对象列表_Java中的对象列表
  6. ppt倒计时3分钟_这些出神入化的PPT小技巧,帮你轻松告别丑PPT!花3分钟看一看吧...
  7. Disruptor内存消息队列的资料整理
  8. 【队列+模拟】机器翻译 luogu-1540
  9. Spring Boot 概述、初始化器、spring-boot-maven-plugin 插件简化部署、starter 自动配置原理
  10. Vue之echarts圆饼图详解
  11. C/C++ Npcap包实现数据嗅探
  12. 《软件工具》分享2款好用的时序图工具
  13. 苏宁易购启动2022年货节:双线上线千场直播,拉满过年氛围
  14. wex5 php开发,WeX5开发移动APP(SQLite本地数据优化)
  15. openstack compute service list报错(HTTP 503)
  16. matlab画双曲线的四种方法
  17. android webview 播放视频总结,Android WebView 播放视频总结~
  18. linux hudson svn,Hudson Maven SVN快速搭建持续集成环境
  19. 大数据学习笔记—大数据概论
  20. 【机器学习】特征提取-TFIDF

热门文章

  1. 互联网公司产品经理们面试的终极攻略
  2. java查重小程序_”万能查重器“小程序
  3. 8个角度分析:CRM功能
  4. 电脑删除的照片怎么恢复?
  5. mysql获取上月月份_mysql 查询当前月份 上个月份 上上个月份
  6. Docker 更换镜像源地址
  7. 操作系统之存储器管理方式
  8. 网站性能优化从入门到粗通(PHP 篇)
  9. H5实现聚合支付及踩坑
  10. 统信UOS家庭版使用感受 (by 统信鳄)