Scrapy框架很好,也提供了很多扩展点,可以自己编写中间件处理Scrapy的Request和Response。但是可定制化或者可掌控性来说,还是自己写的爬虫更加强一些。

接下来,我们来看一下使用Python第三方库:requests和bs4抓取空姐网的美女。

requests和bs4

国际惯例,我们先了解一下requests和bs4。

requests是Python非常流行的处理网络数据的第三方库。相对于Python内置框架urllib、urllib2来说,requests提供的操作更加简洁而且更加丰富。如官方的requests示例:

requests示例

通过requests,我们可以很方便的发送GET、POST、DELETE、PUT请求,获取相应数据等等。

bs4是指BeautifulSoup 4.x版本。相对于BeautifulSoup 2.x和3.x,4.x提供了更加丰富和人性化的api。使用BeautifulSoup,我们可以很方便的定位到HTML中我们想要的元素,获取元素值等等。如:

bs4示例

查看空姐网结构

进入正题。

首先,我们查看一下空姐网的网页结构,找到每个人的相册页面。在kongjie.com里面随意翻翻,就能找到热门相册页面,如图:

相册页面

首先,分析一下该页面结构,提取出每个人的相册页链接。如图:

每个人的相册

class属性为ptw的div下,ul中的每一个li都是每个人的相册封面,通过提取li中的链接,就能进入每个人的相册。

开始爬取

从上面这个页面提取每个人相册链接的css表达式为“div.ptw li.d”。这样,我们就可以把这个表达式用在BeautifulSoup里面了。

如,

解析每个人的相册链接

现在,获取到了每个人的相册链接,接下来就是编写save_images_in_album()方法,进入每个人的相册里面抓取图片了。再提一下,再这里,我们提取完一页中每个人的相册链接之后,解析了网页里的“下一页”的链接,这样就能自动翻页抓取了。

下一页

要编写爬虫,我们还是获取一下浏览器访问这个页面时的Request Headers,这样,就能绕过一些简单的反爬虫手段。

Headers

然后,进入到相册内部,查看一下网页结构,如图:

相册内图片

我们得知,id为photo_pic,class为c的div里面,第一个超链接里面的img标签就是大图。所以,我们在这里提取这个链接。我们使用soup.find('div', id='photo_pic', class_='c')定位到id为photo_pic、class为c的div,然后通过image_div.a.img['src']就能拿到这个图片的链接了。

拿到一张图片的链接之后,我们需要切换到下一张图片。可以看到,大图下面最后面有个向右的箭头,这个是下一张图的按钮,我们获取这个按钮的链接,获取连接对应的css表达式为“div.pns.mlnv.vm.mtm.cl a.btn[title="下一张"]”,然后就可以重复上面两个步骤爬取相册里面所有的照片了。

在这里,我们怎么知道一个相册里的图片都爬取完成了呢?

我们使用redis来存放爬取了的图片id,如果一张图片id已存在redis中了,那么不爬取了,这样,我们就能很方便的知道一个相册是否爬取完了(相册中所有图片id都存在redis中了,就表示该相册爬取完了)。

因此,我们写出save_images_in_album()方法如下:

save_image_in_album

这里,我们从相册的url中,通过正则表达式:uid_picid_pattern = re.compile(r'.*?uid=(d+).*?picid=(d+).*?')解析出用户id和每张图片的id。然后就可以用redis来去重了。

下载图片

在上面这个函数里,我们拿到了每张图片大图的链接,即image_src变量。然后我们就可以编写save_img()方法来保存图片了。如:

save_img

运行结果

最后,我们在命令行运行Python kongjiewang.py。看一下结果:

运行结果

结果2

大功告成!

Python网络爬虫requests、bs4爬取空姐图片,福利哦相关推荐

  1. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  2. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

  3. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  4. Python 网络爬虫实战:爬取知乎回答中的全部图片

    平时逛知乎的时候,经常能看到很多很棒的图片,精美的壁纸,搞笑的表情包,有趣的截图等等,总有想全部保存下来的冲动. 于是在一个小老弟的拜托之下,我把之前的知乎爬虫改造了一下,改装成了一个可以下载知乎回答 ...

  5. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  6. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  7. [day1]python网络爬虫实战:爬取美女写真图片

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  8. Python网络爬虫使用BeautifulSoup爬取网页内容并存入数据库案例

    使用BeautifulSoup爬取网页内容并存入数据库案例 学习了Python网络爬虫,完成里一个比较完整的爬虫案例与大家分享 爬取地址:http://www.tipdm.com/cpzx/index ...

  9. python酒店评论分析_手把手用Python网络爬虫带你爬取全国著名高校附近酒店评论...

    点击蓝色"Python空间"关注我丫 加个"星标",每天一起快乐的学习 今 日 鸡 汤 我站在鼓楼下边,一切繁华与我无关. /1 前言/ 简介:本文介绍如何用p ...

最新文章

  1. 从业5年,教你学习Linux开发
  2. 201771010126.王燕《面向对象程序设计(Java)》第六周学习总结
  3. 如何让SiteMapPath使用指定路径指定名称的sitemap文件。
  4. myeclipse10安装了activiti插件后创建BPMN 文件时报错,
  5. python打开文件要wordcloud吗,使用python创建wordcloud
  6. mysql-5.1.73-8.el6_在centos中安装mysql详细步骤说明
  7. Emacs远程开发及projectile安装
  8. 【转】Golang 新手可能会踩的 50 个坑
  9. python点击按钮窗口之间跳转_PyQt5点击按钮,实现界面之间的跳转思路
  10. Xcode常用快捷键
  11. 生意经:网店营销要搭强者的便车
  12. C语言内部强化培训视频教程
  13. 场景编程集锦 - BMI指数与健身达人
  14. 那款降噪耳机好用?平价党降噪耳机推荐
  15. ccf等会议排行参考
  16. C++实现聊天程序(QQ类型)
  17. prometheus+grafana告警,监控部署展示
  18. commonmark使用教程
  19. PS学习笔记----------利用图层蒙版来实现无损抠图
  20. 个人资料中性别选择 男女提示框

热门文章

  1. Mybatis——增删改查CLUD
  2. JS实现简易ATM机
  3. HttpClient使用不当,服务挂了!是时候系统学习一下了
  4. Qt Linguist介绍
  5. 工作是最好的投资——图书摘录
  6. 1133 - 数组基础-统计频次
  7. 回归和分类模型性能评估指标MSE,MAE,PR,ROC,AUC
  8. 你只管追求卓越,成功自然会尾随而到
  9. git-回滚到某次提交reset current branch to here
  10. EnglishPlayer ---- 英语听写工具发布了!