小言_互联网的博客

Python爬虫 爬取全站妹子图 唯1图库 mmonly

436人阅读  评论(0)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

自从小白我学习了Python,就对各种妹子图比较感兴趣,哦,不,是对爬取妹子图感兴趣。小白我计划写一个爬取妹子图系列。上一篇,我们爬取了妹子图mzitu网站,收获满满,这篇,我们对另外一个制作精美的妹子图网站进行爬取,希望大家能够对Python语言学习感兴趣。

网站长这个样子

页面分析

1、通过一直点击 下一页 可以看到网站内的全部套图

2、通过爬取单个页面,可以获取到套图的首页地址、标题、发布日期

3、单个套图内图片上右键 -> 查看元素 即可拿到当前图片的地址和下一页图片的网页地址。方法还是比较简单。

这样,就可以得到我们想要的资源。

关键源码

构造每个page的URL


  
  1. i = 2
  2. while i < 5: # 限制爬取页数
  3. url = root_url + 'list_10_' + str(i) + '.html' # https://www.mmonly.cc/mmtp/xgmn/list_10_3.html
  4. print(url)
  5. self.urlManager.add_new_url(url)
  6. i = i + 1

xpath解析单个套图


  
  1. def parsePic(self, base_url,new_url,headers):
  2. html_content = self.downloader.download_text(new_url, headers, 'gb2312')
  3. if html_content is None:
  4. return None
  5. # 存放数据
  6. new_data=list()
  7. ht = etree.HTML(html_content)
  8. try:
  9. nodes=ht.xpath( '//div[@class="wrapper clearfix imgtitle"]/div[@class="big-pic"]/div/p/a')
  10. for i in range(len(nodes)):
  11. node=nodes[i]
  12. url=str(node.xpath( './@href')[ 0])
  13. img=str(node.xpath( './img/@src')[ 0])
  14. da = { 'referer': new_url, 'picUrl': img}
  15. new_data.append(da)
  16. url= 'https://www.mmonly.cc/mmtp/xgmn/'+url
  17. if url.find(base_url)== 0: # 找到了
  18. ret=self.parsePic(base_url,url,headers)
  19. if ret is not None:
  20. for data in ret:
  21. new_data.append(data)
  22. except Exception as e:
  23. self.logger.error(e)
  24. return new_data

下载图片资源并保存


  
  1. for da in new_data:
  2. headers1[ 'Referer']=da[ 'referer']
  3. url=da[ 'picUrl']
  4. pic = '%s/%04d.jpg' % (randomstr, i)
  5. artical.sourcePicList.append(url)
  6. artical.picList.append(pic)
  7. data = HtmlDownloader().download_bin(url,headers1)
  8. if data is not None:
  9. fpath = '%s%04d.jpg' % (path, i)
  10. with open(fpath, 'wb') as f:
  11. f.write(data)
  12. f.close()
  13. self.logger.info( '共 %s张,下载第 %s张图片成功:%s' % (length,i,url))
  14. else:
  15. self.logger.info( '共 %s张,下载第 %s张图片失败:%s' % (length,i,url))
  16. i=i+ 1

爬取结果

总结

大家是不是已经学会了呢?非常简单。如果还有什么不懂的,欢迎联系小白我。

不过大家一定不要频繁去下载,据说会给服务器带来压力,会封帐号,以后就不能查看了。

最后提醒大家,一点要以学习为重,小白我下载到的所有图片已删除,希望大家多多学习,多做有意义的事情,谢谢大家。

获取完整源码,欢迎关注 80后老吴

 

 

 


转载:https://blog.csdn.net/wy_51131/article/details/110137819
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场