1. 首页
  2. Python

Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!

“u003Cdivu003Eu003Cpu003E​其实很多编程语言都可以做爬虫,例如java、c#、php等等甚至excel都可以抓网页的图表,那么为什么我们要用Python呢?它简单、便捷,而且有好多库可以选择,可以说python是写爬虫的首选了!u003Cu002Fpu003Eu003Cpu003E今天就来带大家写一个简单而又完整的爬虫,我们来抓取整站的图片的,并且保存到电脑上!u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1531527679610a9a826b7f7″ img_width=”1280″ img_height=”853″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E准备工作u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E工具:Python3.6、pycharmu003Cu002Fpu003Eu003Cpu003E库:requests、re、time、random、osu003Cu002Fpu003Eu003Cpu003E目标网站:妹子图(具体url大家自己去代码里看。。。)u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F15315269941763de4a39122″ img_width=”394″ img_height=”271″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003E u003Cstrongu003E在写代码之前u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E在我们开始写代码之前,要先对网站进行分析,重点有这个几个地方:u003Cu002Fpu003Eu003Cpu003E1、先判断网页是否静态网页,这个关系我们采用的爬虫手段!u003Cu002Fpu003Eu003Cpu003E简单的说,网页中的内容,在网页源代码中都可以找到,那么就可以断定,这个网站是静态的了;如果没有找到,就需要去开发者工具中查找,看看是抓包呢还是分析js结构或者其他的方式。u003Cu002Fpu003Eu003Cpu003E2、看看网页的结构,大致清楚抓取目标数据,需要几层循环,每次循环的方式,以及是否保证没有遗漏!u003Cu002Fpu003Eu003Cpu003E3、根据网页源代码来决定采用的匹配方式u003Cu002Fpu003Eu003Cpu003E一般来说,正则表达式是处理字符串最快的方式,但是在爬虫中它的效率并不是很高,因为它需要遍历整个html来匹配相关内容,如果网页源代码比较规整的话,建议采用bs4或者xpath等等解析网页结构的方式比较好!u003Cu002Fpu003Eu003Cpu003E当然,今天我们是基础向的爬虫,就用正则表达式了,毕竟正则是必须掌握的内容!u003Cu002Fpu003Eu003Cpu003E那么,具体怎么写爬虫代码呢~?简单的举例给大家说下:u003Cu002Fpu003Eu003Cpu003E如果是手工操作的话,大概是这个流程u003Cu002Fpu003Eu003Cpu003E打开主页==>选择一个分类==>选择一个图集==>依次选择图片==>右键保存==>重复以上保存其他图片u003Cu002Fpu003Eu003Cpu003E那么这个过程放到代码中呢,它的结构大概是这样:u003Cu002Fpu003Eu003Cpu003E访问主页url==>找到并循环所有分类==>创建分类文件夹==>访问分类url==>找到页码构建循环分类所有页==>循环页面所有图集==>创建图集文件夹==>找到图集内所有图片url==>保存到对应文件夹u003Cu002Fpu003Eu003Cpu003E好了,思路也有了,那就废话不多说了,我们来写代码吧~!u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F153152770035879f86ebcf5″ img_width=”1280″ img_height=”853″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E开始写代码u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E首先是导入上述的各种库,没有的需要安装一下!然后写入以下几行代码获取网页源代码看看是否有反爬:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1531527967688e948a42bdf” img_width=”308″ img_height=”60″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E如果能顺利打印出源代码且和网页右键查看的源代码一致,那么可以判定该网站基本没有反爬了!u003Cu002Fpu003Eu003Cpu003E第16行代码的含义是给html设定编码格式。因为Python3默认是utf-8,如果网站不是这个编码格式的话,会出现乱码,所以我们直接指定一下。u003Cu002Fpu003Eu003Cpu003E接下来呢,就是找到所有分类的名字和url了,来看看网页中和源代码中,它的位置在哪u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F153152794164618347fa1d2″ img_width=”1008″ img_height=”51″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F153152799679793531010fc” img_width=”921″ img_height=”453″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E全部在a标签的属性中,那么我们可以用一行代码获取了u003Cu002Fpu003Eu003Cpu003Einfos = re.findall(r’a href=”(http:u002Fu002Fwww.meizitu.comu002F.*?html)” target=”_blank” title=”(.*?)” ‘,html.text)u003Cu002Fpu003Eu003Cpu003E这里用正则匹配,2个括号中的内容就是我们需要的url和名字了,然后开始构建循环遍历所有的分类u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F15315282963387c6954bc46″ img_width=”804″ img_height=”271″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E上一步取出的infos是列表,而且每一个元素都是一个元组,格式为(url,名字),所有我们用2个元素去遍历infos,来获取我们需要的内容,先打印下看看结果是否正确!u003Cu002Fpu003Eu003Cpu003E这里先不创建文件夹,先进行下一步,访问分类的url,然后开始构建分类中的页码吧!分析网页发现,所有的页码都在下方,但是还是稍有不同:没有当前页、多了下一页和末页u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1531528335117fd405f99c5″ img_width=”685″ img_height=”104″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1531528350313be0a1db2f3″ img_width=”531″ img_height=”398″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E由于存在图集不足一页的情况(上述源代码就不会出现),所以我们这么处理循环u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1531528832592e07aacfb1d” img_width=”845″ img_height=”265″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E19-21行获取分类的源代码,22行获取所有页码的url,然后用set()函数去重,再新建一个空列表,将分类的url加进去,注意,元组是不能用append()方法添加到列表中的,所以要先将set元组转化为列表然后分别重新拼接列表内所有的url,在将2个列表相加的方式合并为一个列表!这样我们就得到了分类下所有翻页页面的urlu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1531528944120e55f9c438b” img_width=”841″ img_height=”202″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E循环所有的url,获取所有图集的url列表,27行没有用encoding指定编码是因为这里我不需要取到中文的内容,所以简写了一下!终于该取图片了!u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F153152912712774a33fb31d” img_width=”1088″ img_height=”422″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E图集的title和图集内所有图片的url都取到了!其实到这里就已经完成了爬虫的80%了!剩下的20%就是保存图片到本地,这里就不多说了,给大家提供2个代码片段,一个是新建文件夹并判断是否存在,一个是剔除字符串内不符合命名要求的字符u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F153152915157593fbd8ebaf” img_width=”418″ img_height=”83″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1531529157678fa59d30d28″ img_width=”431″ img_height=”82″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E最终完整代码和运行效果u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F1531527724392e000a9caeb” img_width=”1023″ img_height=”681″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E在请求中加入了时间模块的暂停功能,不加入的话可能会被网页拒绝访问!u003Cu002Fpu003Eu003Cpu003E在最后请求图片地址的时候,需要加入UA来告诉服务器你是浏览器而不是脚本,这个是最常用的反爬手段了u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F15315292266370c28e4bdf5″ img_width=”1041″ img_height=”1178″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F153152922692338a2b34493″ img_width=”578″ img_height=”423″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E下载一段时间后的效果u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1531529663703cca78ba97c” img_width=”1175″ img_height=”684″ alt=”Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E相信大家应该也做出你自己的脚本了吧!有什么问题也可以在评论区或者私信发消息哦!u003Cu002Fpu003Eu003Cpu003E看在打这么多字的份上,给个赞呗!u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够!

主题测试文章,只做测试使用。发布者:敢吻,转转请注明出处:http://www.cxybcw.com/13268.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code