Python3--妹子图实战

这个项目是我自己想做的,我并没有自行去看其他人的博客,只是单纯有这个想法.

注:本文使用的模块不多,思路也很简单.几乎都是链式爬取的,也可以叫做是深度爬取,即是一个链接接着下一个链接!

等你们看完代码,你们都会惊讶,这么简单!!!!

哈哈,是的!!


废话不多说,直接上步骤!

1.毫不迟疑就是分析网站的结构啦:


首先点进去打开首页,点进去第一个套图的网址,

发现,第一张图片的链接是:http://www.mzitu.com/130071,而最后一张是http://www.mzitu.com/130071/49

显然是以http://www.mzitu.com/130071就是图片合集的下标0了!找到这个就好办了,我们再次分析图片的结尾下标!结尾下标是:http://www.mzitu.com/130071/49,一共50张!

然后在去分析下一组这个url,发现一个更大的惊喜.

的链接是:http://www.mzitu.com/130023,而对应首页上的第二个套图链接!


分析完这个就好办了,那么我现在有思路了

说下,首先,这个网站的链接分布类似于火车节的那种,只要你找到头,就能通过头一直查找下去,直到网站的底部.

思路:

    1.打开一个套图的URL(头),解析出这个网页内部的img图片地址,下载这个img图片.

    2.让其寻找下一页的url!再次打开,下载,再次寻找下一页的url....以此类推!直到找到网站的底部位置!

    但是问题来了,该怎么去实现呢?

来一串伪代码:

def Get_thelink_and_next_link(url):

    打开url,获取网页呈现后的结果.

    解析出三个重要信息:

        1.这个页面的妹子图链接.

        2.下一页的妹子图链接.

        3.解析出妹子图的名称(这个在存储有用.)

    下载 妹子图片链接

    存储到本地 记得把妹子图的名称加上.

    一直重复

那么开始!!!


首先导入我们所需要的库文件.

我这里是通过requests这个第三方库来实现这个代码.

import requests#打开网页,进行下载时所用

import re#解析时用

from requests.exceptions import ConnectionError,HTTPError#捕捉错误


我们定义了函数,get_links_img()

里面的功能包括,打开网页并且解析出刚才说的三个重要的信息.

    图片的链接

    该页面的下一页

    妹子图的名称

我这里是完全通过re模块来去解析的.然后注意下那个Splite(),这个函数就是解析下一页的url里面带上的双引号""!


解析过后便是提示和下载图片

我们在这用requests.get()打开刚刚解析出的图片链接,然后获取这个图片链接的二进制.

通过文件读写的方式写入到本地.

自此,整个函数的功能执行差不多执行完毕.

还差最最关键的一步,就是返回已经解析好的下一页的链接.

为什么要返回?

因为返回才能执行爬取下一页的功能!


有很多人可能想到我这样的代码结构,会用递归函数去实现爬取.

这里我得夸你,真的,你能想到递归,就意味着你能想到比递归更好的解决这个函数运行的方法.

    我一开始就是使用递归,然后程序越跑越慢,执行效率极其低下.

    然而,互联网是多么得伟大,我尝试去查找解决方案.终于让我找到了.

    看图!


现在知道为什么要返回下一页的链接了吧.

    简单解析下:

    url = 链接

    while url:#如果url能用,那么我就传入到下面那个函数

        url = get_links_and_img(url)

    get_links_and_img()返回的这个url是能用的,我就在再次传入到get_links_and_img(),如果不能用就直接停止.

然后运行结果...



怎么样?是不是很简单?

了了70行代码,一个非常简单的爬虫就完成了..

其实爬虫学的不是方法,而是思路.我个人认为,一个网站怎样爬取,不是看你怎么爬,而是看这个网站的布局.根据网站的布局来进行代码编辑.

爬虫怎么去学才能学好?

    我个人给出的观点是:与其在那看视频学习,不如自己去实践一番.动手才是王道.

如果你也喜欢爬虫,如果你也喜欢技术,那么欢迎你加入我们的群,我们欢迎热爱技术的你

                                                    


群号码:749511386

谢谢支持!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章