欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小白爬虫第一弹之抓取妹子图

程序员文章站 2024-02-04 21:07:34
...

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!

小白爬虫第一弹之抓取妹子图

小白爬虫第一弹之抓取妹子图


这是一篇完全给新手写的爬虫教程

小白爬虫第一弹之抓取妹子图由于经常在群里装逼加上群主懒啊(你看有多久没更新文章就知道了),让我来一篇爬虫的教程。


小白爬虫第一弹之抓取妹子图

如此装逼机会怎么能错过,今天我来给大家来一篇基础爬虫教程。

你要问目标是啥? 要知道XX才是学习最大的动力啊!所以目标就是   mzitu.com 小白爬虫第一弹之抓取妹子图(废话真多还不开始) , 下面请各位跟我的教程一步一步走,喂!!说的就是你啊!别看着了,照着教程做啊!



小白爬虫第一弹之抓取妹子图


1、基础环境部分:


工欲其事必先利器,要想把心爱的妹子搬进你的给她准备的房子,总得有几把斧子才行啊!下面这就是几把斧子!


1.1:Python基础运行环境:本篇教程采用Python3 来写,所以你需要给你的电脑装上Python3才行,我就说说Windows的环境(会玩Linux的各位应该不需要我多此一举了)。

anaconda   (点我下载)(这是一个Python的科学计算发行版本,作者打包好多好多的包,  


小白爬虫第一弹之抓取妹子图

不知道干啥的没关系,你只需要知道拥有它之后,那些Windows下pip安装包报错的问题将不复存在)


下载不顺利的同学我已经传到百度云了:http://pan.baidu.com/s/1boAYaTL

1.2:Requests  rllib的升级版本打包了全部功能并简化了使用方法(点我查看官方文档)


1.3: beautifulsoup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.(点我查看官方文档)(


小白爬虫第一弹之抓取妹子图

作为一个菜鸟就别去装逼用 正则表达式了,匹配不到想要的内容,容易打击积极性。老老实实的用beautifulsoup 吧!虽然性能差了点、但是你会爱上它的。)

1.4:LXML  一个HTML解析包 用于辅助beautifulsoup解析网页(如果你不用anaconda,你会发现这个包在Windows下pip安装报错,


小白爬虫第一弹之抓取妹子图用了就不会啦。)。


上面的模块需要 单独安装,下面几个就不用啦。


1.5:OS 系统内置模块


下面是IDE 你喜欢用什么就用什么啦!


1.6:PyCharm  一个草鸡好用的PythonIDE工具 、真滴!草鸡好用··(我是下载地址)试用三十天 足够完成这个小爬虫啦。(如果你电脑已经存在Python环境 又需要使用anaconda的话,请按照下面的图设置一下哦!)


小白爬虫第一弹之抓取妹子图

好啦、下面开始安装需要的模块。


因为我安装的是anaconda这个科学计算的发行版,安装方式是酱紫滴:conda install 包名(当然 pip install 包名也是可以的哦!)

conda install beautifulsoup4   conda install lxml   或者   pip install requests   pip install beautifulsoup4   pip install lxml

小白爬虫第一弹之抓取妹子图


大概界面就是上面的样子了。其余类似安装即可,好啦 下面开始正题了


首先我们打开PyCharm 新建一个Python文件,写入以下代码(喂喂!不要复制哦  自己敲一遍 印象更佳啦。)

import requests ##导入requests      
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup      
import os

好啦!准备工作完了、 我们来开始让妹子到碗里来吧ヽ(●-`Д´-)ノ  一个简单爬虫的诞生大慨需要下面几个步骤。(我知道图很简陋、请务必不要吐槽)


小白爬虫第一弹之抓取妹子图



  • 爬虫入口:顾名思义我需要程序从什么地方开始获取网页

  • 存储数据:如果获取的网页有你需要的内容则取出数据保存

  • 找到资料所在的地址:如果你你获取到的网页没有你需要的数据、但是有前往该数据页面的地址URL、则获取这个地址URL,再获取该URL的页面内容(也就等于当作爬虫入口了)


好啦!图很简陋、将就着看看,现在来开始看看网页找一个爬虫入口(开始爬取的页面)


小白爬虫第一弹之抓取妹子图


良心站长啊!居然有一个页面有整站所有的数据地址是http://www.mzitu.com/all 我们就以这个页面开始爬取(PS:真良心站长)

下面是我们的第一段代码:用作获取http://www.mzitu.com/all这个页面。

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释  
print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)

PS: 如果对requests.get(all_url, headers=headers)感到不解的各位,请务必去再看一遍官方文档哦(解释得很清楚呢)


你在你的IDE中运行的时候会打印出下面的内容:


小白爬虫第一弹之抓取妹子图


第一段部分完成啦!!是不感觉超简单!!!!看懂没?没看懂继续瞅瞅、对于看懂的各位小哥儿(妹儿)我只想说···  小哥儿(妹儿)!你老牛逼了!!

没看懂?报错?没关系!看见屏幕右边那个群号没?加它!热心的群友会为你耐心解答滴············


好啦!第一部分获取网页的部分完成啦!我们来开始第二部分提取我们想要的内容吧!!


在Chrome中打开我们第一部分请求的网址:http://www.mzitu.com/all  、 按下F12 调出Chrome的开发者调试工具(不熟练的同学一定要去了解一下哦!爬虫中绝大部分工作要靠这个来完成呢!是必备技能哦!)


是这样:


小白爬虫第一弹之抓取妹子图



看见图中那句话没?没看见?仔细看看那可是我们必须要使用的工具哦!!好啦下面我们看看使用方法


小白爬虫第一弹之抓取妹子图


好啦、我们就是通过这种方法来找到我们需要的数据在那一个标签里面的、方便后面提取出来啦!(实例很简陋 看不懂的童鞋百度一下啦!教程很多的)

你会发现这个页面并没有我们需要的图片地址啊!没有那么怎么办呢?上面那张超级简陋的流程图看了嘛?没看?赶快去瞅瞅··  你就知道我们该干啥啦!

嗯,我们需要找到图片地址所在的页面!


小白爬虫第一弹之抓取妹子图


观察一下网页你会发现图片页面的地址全部都在<li>…</li>标签中、(讲真!这么良心,还这么有规律的网页不多了啊!)不信啊?你展开<li>标签瞅瞅就知道啦


小白爬虫第一弹之抓取妹子图


点开<li>标签你会发现图片页面的地址在<a>标签的href属性中、主题在<a>标签中(搞不清楚的这两个的区别的同学、去了解一下html的基础啦!)


实现逻辑就是:先找到页面中的全部 <li>标签、然后提取出中间<a>标签的href属性值与<a>标签的类容,前者我们用来继续请求html看看会不会有我们需要的图片下载地址,后者我们存储的时候给文件夹命名使用。


可能有小哥儿(妹儿)会问,为什么不直接查找<a>标签?


你观察一下网页就知道呐!还有其他地方使用了<a>标签,如果直接查找<a>标签就会多出很多我们不需要的东西,也不方便我们提取想要的东西,先查找<li>标签就是限制一下<a>标签的范围啦!


通过上面的方法、知道了需要的数据的位置!该我们的beautifulsoup来大展身手啦!!!加上上面的一段代码现在应该是这样的啦!看不懂?没关系 看注释 看注释。

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释   #print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)  
li_list = Soup.find_all('li') ##使用BeautifulSoup解析网页过后就可以用找标签呐!(find_all是查找指定网页内的所有标签的意思,find_all返回的是一个列表。)  
for li in li_list: ##这个不解释了。看不懂的小哥儿回去瞅瞅基础教程      print(li) ##同上

运行一下试试!


小白爬虫第一弹之抓取妹子图


诶!!!不对啊!!抓到了我们不需要的东西啊!!!这可怎么办啊!!


别急 别急!我们再去看看网页的 F12瞅瞅。


小白爬虫第一弹之抓取妹子图


找到啦!原来有其他地方有<li>标签、观察不仔细啦!现在我们怎么办?


我们再去F12瞅瞅!

小白爬虫第一弹之抓取妹子图


哈哈!这就简单了,我们推翻上面的思路  现在我们先找到 <div class=”all”>这个标签 , 然后直接找<a>标签!


诶!不对啊!怎么直接找<a>标签了!上面的<li>标签呢!!


你仔细瞅瞅网页!在<div class=”all”></div> 这个模块里面的<a>标签的全是我们需要的东西,就不需要<li>标签来限制提取范围啦!所以就直接扔掉了不用了。也方便写代码啊。


现在我们改改上面的代码!

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释   #print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)   #li_list = Soup.find_all('li') ##使用BeautifulSoup解析网页过后就可以用找标签呐!(find_all是查找指定网页内的所有标签的意思,find_all返回的是一个列表。)   #for li in li_list: ##这个不解释了。看不懂的效小哥儿回去瞅瞅基础教程      #print(li) ##同上  
all_a = Soup.find('div', class_='all').find_all('a') ##意思是先查找 class为 all 的div标签,然后查找所有的<a>标签。  
for a in all_a:       print(a)

PS:  ‘find’ 只查找给定的标签一次,就算后面还有一样的标签也不会提取出来哦! 而  ‘find_all’ 是在页面中找出所有给定的标签!有十个给定的标签就返回十个(返回的是个list哦!!),想要了解得更详细,就是看看官方文档吧!

来看看运行结果!


小白爬虫第一弹之抓取妹子图


哇哦!!全是我们需要的类容诶!什么?你的和这个不一样?或者报错了?回头看看 你做的和我有什么不一样······ 实在不行,群里求助吧!

好啦!现在我们该来提取我们想要的内容了!又该我们BeautifulSoup大展身手了。


我们需要提取出<a>标签的href属性和文本。怎么做呢?看代码!

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释   #print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)   #li_list = Soup.find_all('li') ##使用BeautifulSoup解析网页过后就可以用找标签呐!(find_all是查找指定网页内的所有标签的意思,find_all返回的是一个列表。)   #for li in li_list: ##这个不解释了。看不懂的效小哥儿回去瞅瞅基础教程      #print(li) ##同上  
all_a = Soup.find('div', class_='all').find_all('a') ##意思是先查找 class为 all 的div标签,然后查找所有的<a>标签。  
for a in all_a:       title = a.get_text() #取出a标签的文本      href = a['href'] #取出a标签的href 属性      print(title, href)

就多了两行!很方便吧!!为什么这么写?自己去看官方文档啦!(我要全解释了,估计有些小哥儿官方文档都不会去看。这样很不好诶。)


来来!看看结果怎么样 我们来打印一下看看!

小白爬虫第一弹之抓取妹子图


哈哈 果然是我们想要的内容!我们已经找向目标前进了一半了!好啦前面已经把怎么实现的方法讲清楚了哦(如果你觉得什么地方有问题或者不清楚,在群里说说 我好改改)下面就要开始加快节奏了!!(篇幅长了 会被人骂的!)


上面我们找到了 图片的标题(暂时不管,这是后面用来创建文件夹的)和 图片页面的地址(这是我们这一步需要做的),需要做什么请参考最上面那个超简陋的流程图。


先查看一下图片页面有什么东西


你会发现一个页面只有一张图片啊!想要下载一套啊!


你点一下面的 1 、2、3、4········ 你会发现地址栏里面的URL在变化啊!这就是我们的入手的地方了!

小白爬虫第一弹之抓取妹子图


页码在<span>标签中,我们只需要获取最后一个页面的页码, 从 1 开始历遍,和我们上面获取的URL拼接在一起就是每张图片的页面地址啦!


在页面的源代码搜一下<span>标签

小白爬虫第一弹之抓取妹子图


可以发现最后一个页面的<span>标签是第二十一个标签,因为在html中标签是成对的,所以我需要查找的是第十一个<span>标签(BeautifulSoup是以开始的标签定位,而不是结尾的。开始的标签是这样<>;结束的标签是这样</>)

废话不多说上代码!


PS:下面的代码我已经把注释掉的删掉了,所以看起来和上面的不太一样。

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)  
all_a = Soup.find('div', class_='all').find_all('a') ##意思是先查找 class为 all 的div标签,然后查找所有的<a>标签。  
for a in all_a:       title = a.get_text() #取出a标签的文本      href = a['href'] #取出a标签的href 属性      html = requests.get(href, headers=headers) ##上面说过了      html_Soup = BeautifulSoup(html.text, 'lxml') ##上面说过了      max_span = html_Soup.find_all('span')[10].get_text() ##查找所有的<span>标签获取第十个的<span>标签中的文本也就是最后一个页面了。      for page in range(1, int(max_span)+1): ##不知道为什么这么用的小哥儿去看看基础教程吧          page_url = href + '/' + str(page) ##同上          print(page_url) ##这个page_url就是每张图片的页面地址啦!但还不是实际地址!

好啦!运行一下试试!就是下面这样:

小白爬虫第一弹之抓取妹子图


完美!!每个页面的地址都出来啦!!!


下面开始找图片的实际地址啦!


随意打开上面的地址地用F12调试工具试试!

小白爬虫第一弹之抓取妹子图


会发现我们需要的地址在<div class=”main-image”>中的<img>标签的src属性中。是不是很眼熟啊!知道怎么写了吧?下面上代码:

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)  
all_a = Soup.find('div', class_='all').find_all('a') ##意思是先查找 class为 all 的div标签,然后查找所有的<a>标签。  
for a in all_a:       title = a.get_text() #取出a标签的文本      href = a['href'] #取出a标签的href 属性      html = requests.get(href, headers=headers) ##上面说过了      html_Soup = BeautifulSoup(html.text, 'lxml') ##上面说过了      max_span = html_Soup.find_all('span')[10].get_text() ##查找所有的<span>标签获取第十个的<span>标签中的文本也就是最后一个页面了。      for page in range(1, int(max_span)+1): ##不知道为什么这么用的小哥儿去看看基础教程吧          page_url = href + '/' + str(page) ##同上          img_html = requests.get(page_url, headers=headers)           img_Soup = BeautifulSoup(img_html.text, 'lxml')           img_url = img_Soup.find('div', class_='main-image').find('img')['src'] ##这三行上面都说过啦不解释了哦          print(img_url)

运行一下

小白爬虫第一弹之抓取妹子图


完美!就是我们想要的东西,下面开始保存了哦!哈哈!妹子马上就可以到你碗里去了!


首先我们要给每套图建一个文件夹,然后将下载的图片以URL的 xxxxx.jpg 中的xxxxx命名保存在这个文件夹里面。直接上代码了!

import requests ##导入requests   
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup  
import os   headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)  
all_url = 'http://www.mzitu.com/all'  ##开始的URL地址  
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释  
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)  
all_a = Soup.find('div', class_='all').find_all('a') ##意思是先查找 class为 all 的div标签,然后查找所有的<a>标签。  
for a in all_a:       title = a.get_text() #取出a标签的文本      path = str(title).strip() ##去掉空格      os.makedirs(os.path.join("D:mzitu", path)) ##创建一个存放套图的文件夹      os.chdir("D:mzitu"+path) ##切换到上面创建的文件夹      href = a['href'] #取出a标签的href 属性      html = requests.get(href, headers=headers) ##上面说过了      html_Soup = BeautifulSoup(html.text, 'lxml') ##上面说过了      max_span = html_Soup.find_all('span')[10].get_text() ##查找所有的<span>标签获取第十个的<span>标签中的文本也就是最后一个页面了。      for page in range(1, int(max_span)+1): ##不知道为什么这么用的小哥儿去看看基础教程吧          page_url = href + '/' + str(page) ##同上          img_html = requests.get(page_url, headers=headers)           img_Soup = BeautifulSoup(img_html.text, 'lxml')           img_url = img_Soup.find('div', class_='main-image').find('img')['src'] ##这三行上面都说过啦不解释了哦          name = img_url[-9:-4] ##取URL 倒数第四至第九位 做图片的名字          img = requests.get(img_url, headers=headers)           f = open(name+'.jpg', 'ab')##写入多媒体文件必须要 b 这个参数!!必须要!!          f.write(img.content) ##多媒体文件要是用conctent哦!          f.close()

好了!!来运行一下

小白爬虫第一弹之抓取妹子图

哈哈哈完美!!!以上完毕!下面我们来整理一下代码,弄个函数什么的提示下逼格!加点提示什么的


首先我们上面requests一共使用了三次,我们写一个函数复用 (别怕!一点都不难)

  headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}       content = requests.get(url, headers=headers)       return content

当调用request的时候会获取URL地址的网页然后返回获取到的response (response 是啥? 你理解成请求网页地址返回的源码就好了! 注意:如果请求的是多媒体文件的话  response返回的是二进制文件哦!)


哈哈!第一个就写好啦,简单吧!


第二个是创建文件

def mkdir(self, path):           path = path.strip()           isExists = os.path.exists(os.path.join("D:mzitu", path))           if not isExists:               print(u'建了一个名字叫做', path, u'的文件夹!')               os.makedirs(os.path.join("D:mzitu", path))               return True           else:               print(u'名字叫做', path, u'的文件夹已经存在了!')               return False

调用mkdir这个函数时,会在D:mzitu文件下创建一个path这个参数的文件夹(是参数 不是 path哦!就是你调用的时候传递什么参数给这个函数 就创建什么文件夹!这个函数可以存着,下载东西到本地 都可以用),另外一个好处就是在文件夹已经存在的情况下不会报错退出程序哦!  不使用就会诶!


好啦 剩下的我就一股脑的写出来了!

import requests   from bs4 import BeautifulSoup   import os   class mzitu():       def all_url(self, url):           html = self.request(url)##调用request函数把套图地址传进去会返回给我们一个response           all_a = BeautifulSoup(html.text, 'lxml').find('div', class_='all').find_all('a')           for a in all_a:               title = a.get_text()               print(u'开始保存:', title) ##加点提示不然太枯燥了               path = str(title).replace("?", '_') ##我注意到有个标题带有 ?  这个符号Windows系统是不能创建文件夹的所以要替换掉               self.mkdir(path) ##调用mkdir函数创建文件夹!这儿path代表的是标题title哦!!!!!不要糊涂了哦!               os.chdir(path) ##切换到目录               href = a['href']               self.html(href) ##调用html函数把href参数传递过去!href是啥还记的吧? 就是套图的地址哦!!不要迷糊了哦!       def html(self, href):   ##这个函数是处理套图地址获得图片的页面地址           html = self.request(href)           max_span = BeautifulSoup(html.text, 'lxml').find_all('span')[10].get_text()           for page in range(1, int(max_span) + 1):               page_url = href + '/' + str(page)               self.img(page_url) ##调用img函数       def img(self, page_url): ##这个函数处理图片页面地址获得图片的实际地址           img_html = self.request(page_url)           img_url = BeautifulSoup(img_html.text, 'lxml').find('div', class_='main-image').find('img')['src']           self.save(img_url)       def save(self, img_url): ##这个函数保存图片           name = img_url[-9:-4]           img = self.request(img_url)           f = open(name + '.jpg', 'ab')           f.write(img.content)           f.close()       def mkdir(self, path): ##这个函数创建文件夹           path = path.strip()           isExists = os.path.exists(os.path.join("D:mzitu", path))           if not isExists:               print(u'建了一个名字叫做', path, u'的文件夹!')               os.makedirs(os.path.join("D:mzitu", path))               return True           else:               print(u'名字叫做', path, u'的文件夹已经存在了!')               return False       def request(self, url): ##这个函数获取网页的response 然后返回           headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}           content = requests.get(url, headers=headers)           return content   Mzitu = mzitu() ##实例化   Mzitu.all_url('http://www.mzitu.com/all') ##给函数all_url传入参数  你可以当作启动爬虫(就是入口)

小白爬虫第一弹之抓取妹子图


完美!!好啦!结束了!


如果大家觉得还能看懂、还行的话 我后面在写点儿其他的。

给大家看看我的成果


小白爬虫第一弹之抓取妹子图

最后感谢mzitu.com 的站长。


小白爬虫第一弹之抓取妹子图

  • 来自:静觅

  • 链接:http://cuiqingcai.com/3179.html

  • 转载请注明:静觅 » 小白爬虫第一弹之抓取妹子图

  • 程序员大咖整理发布,转载请联系作者获得授权

小白爬虫第一弹之抓取妹子图

小白爬虫第一弹之抓取妹子图【点击成为Python大神】