Python爬虫(6):煎蛋网全站妹子图爬虫
2018-03-21 15:30
363 查看
Python爬虫(6):煎蛋网全站妹子图爬虫
上一篇文章中我们抓取了豆瓣图书的数据,如果大家运行成功,并且看到文件夹下的 txt 文件了。是不是有一种刚接触编程,第一次输出Hello world!时的欣喜。和上一篇实践不同,我们这一次来爬取 煎蛋网 全站妹子图,并且保存到指定文件夹下。
爬取流程
从煎蛋网妹子图第一页开始抓取;爬取分页标签获得最后一页数字;
根据最后一页页数,获得所有页
URL;
迭代所有页,对页面所有妹子图片
url进行抓取;访问图片
URL并且保存图片到文件夹。
开始
通过上一篇文章的爬取过程,我们基本上理解了抓取一个网站的大致流程。因为一个网站虽然有很多页,但是大部分网站每一页的HTML标签内容都是相同的。我们只要获取到一页的内容,就可以获得所有页的内容了。那么开始之前,我们来分析一下煎蛋网妹子图页面的
URL。第一页的 url:
http://jandan.net/ooxx/page-1第二页:
http://jandan.net/ooxx/page-2最后一页:
http://jandan.net/ooxx/page-93不难发现,煎蛋网的 url 的规律是比较简单的,每一页后面 page 的数字就是几。那么我们可以通过一个循环就可以获得所有的页面 URL 了。但是大家应该想到,这个网站每天都会更新,今天是 93 页,明天就会增加到94页了。如果每一都要爬一次的话,那么每次都要改一下代码页数信息了。这样实现起来虽然可以,但是不免有些愚蠢。所以我们需要通过页面的标签信息让程序自己获得页数,我们访问
http://jandan.net/ooxx/这个页面时,就相当于我们直接访问了最后一页。大家可以自己试试看。
图中我们可以明确的看到最后一页的数字是94.只要通过这个页面的URL进行抓取就可以得到。我们先获得源码:
f12,从页面源码中找到最后一页 94 所在的标签:
原来 94 就在这个
span标签啊。接下来是不是很简单了:
[],大家不要以为只是一个
list,只要
[0]就可以获得的。我们完全可以使用
type(),看一下他的属性,就知道它是一个字符串,我们利用切片去掉第一个和最后一个字符,就得到了页数了。
得到页数后,我们利用循环就可以得到所有页的url了:
list中。
那么现在,我们得到所有页面的 url,就可以来获取每一页的内容了。我们以最后一页为例来进行抓取。
我们仍然使用审查元素,找到图片 url 所在的标签。仍然是老方法,获取到页面所有包含图片的
img标签:
BeautifulSoup的官方文档了解哦。如果大家对 CSS 不是很熟悉,或者根本不知道。也没关系,反正
find_all()和
find()方法也是可以实现的。不过这里我教大家一个简单的CSS选择器方法。我们只要按
f12打开浏览器的开发者工具,找到标签的位置,右击标签。就可以看到这个情况:
没错,我们直接
Copy selector的内容,粘贴出来就是这样的字符串:
#comment-3468457 > div > div > div.text > p > img我们稍微去掉前面的一些标签,大多数情况下保留到父标签后面的内容就可以了。就是这样:
div.text > p > img我们放到代码中,运行一下就知道是不是成功了。结果只一个列表:
接下来就是提取img标签的src属性了。
url并不完整,所以这里我们进行一次判断。如果不完整就给他补全。好了,图片的 url 都获得了,接下来就是保存图片了。大家还记得之前我们介绍
Requests模块的时候,有过保存图片的演示。
因为万维网中每个图片,每个视频都有唯一的 url 指向它们。所以我们只要访问这个 url,并且获得图片的二进制数据,保存到本地就可以了。
.content方法,而不是
.text。这里我们有一个错误过滤,因为保存的过程中会有一些文件保存错误的情况,我们直接过滤掉,不终止程序的运行。好了,爬虫程序到这里基本上已经全部实现了。但是我们如果把所有的图片存放在一个文件夹中,而且还是代码所在文件夹,不免有些难看。我们可以自己指定他们存放的位置。这里需要用的
Python内置的
os库了,不清楚的伙伴可以自己查看资料哈。
如果程序出现错误,可能是我们的程序访问过于频繁,网站封禁了我们的ip。这时,我们就要使用一个代理了。网上免费的代理很多,大家可以自己找,这里简单做一个使用代理的演示。由于是免费ip,不会存活太久就会不能使用,大家不要直接使用代码中的ip。后续可以带着大家一起代建一个自己的代理池。
代码
好了,最后上一下完整代码:相关文章推荐
- Python爬虫(6):煎蛋网全站妹子图爬虫
- Python爬虫之煎蛋网妹子图爬虫,解密图片链接加密方式
- Python爬虫入门-利用requsets库爬取煎蛋网妹子图
- Python爬虫实战(四) :下载煎蛋网所有妹子照片
- Python 爬虫实战案例 : 煎蛋网全站图片爬虫
- Python的学习笔记DAY8---爬虫练习之煎蛋网妹子图爬虫
- Python爬虫之煎蛋网妹子图(一)
- [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址
- python爬虫爬取煎蛋网妹子图片
- 爬虫之煎蛋网妹子图 大爬哦
- Python——用爬虫下载妹子图
- 用python写爬虫,爬取清纯妹子网站
- 爬虫之煎蛋网妹子图 大爬哦
- 用Python爬虫抓取煎蛋(jandan.net)无聊图和妹子图
- python爬虫之反爬虫情况下的煎蛋网图片爬取初步探索
- python——基于煎蛋网的简单图片爬虫
- python 爬虫 实战 抓取妹子图中图
- [置顶] 爬取妹子图(python):爬虫(bs+rq)+ gevent多线程
- Python3 实现妹子图爬虫
- [置顶] [爬虫]使用python抓取京东全站数据(商品,店铺,分类,评论)