使用Python中的BeautifulSoup(bs4)包抓取暴走漫画网站中的热门帖子中的图片。

首先附上参考资料,之前在OSC上有人写了个抓取豆瓣妹子图片的帖子,参考人家的代码,自己重新弄了一下,当然不能像豆瓣妹子那样直接搜索所有的<img>标签啦,因为网页中含有广告啊,头像啊,表情之类的,我只想抓取热门中的内容图片嘛。

这时候就要充分的利用BeautifulSoup啦,先附上参考资料

首先分析暴走漫画网站的html,发现所有的热门内容的<img>标签都在class为img-wrap的<div>中,这样就好办了,完全避免了抓取除了这个div之外的图片,首先需要获取页面中class为‘img-wrap’的所有<div>,使用以下代码:

my_girl = soup.find_all('div',class_='img-wrap')

这时my_girl是一个list对象,我们需要的是遍历所有的class为img-wrap的<div>,找到其中的<img>标签,代码如下:

for girl in my_girl:jokes = girl.find('img')link = jokes.get('src')

在这里要提醒以下,find_all与find是不同的,千万不要用混了,find_all是返回的list对象,而find只是返回第一个,找到了就返回,所以在find_all之后,一定要用for循环遍历一遍,这样就可以啦。

整体的实现思路如下:

1. 首先创建文件夹,取名“暴走漫画”,就在当前目录下,存在的话就不重新创建了

2. 然后写一个函数,def,起名叫page_loop,默认page是1

3. 定义url,page就是url中分页的参数,当然了,url也可以函数传进来或者是系统读取进来,后期改进吧,使用BeautifulSoup打开URL

4. 然后就是上面的找标签操作了,如果要获取其他的网页中的其他信息,一定要好好地分析下网页的结构

5. 获取<img>标签的<src>属性之后,把这个连接取出来,使用with,把链接中的图片存到文件夹中

6. page+1,递归函数,获取下一页的图片

短短的二三十行代码,很有效,4不4.你也可以使用py2exe将程序转成Windows上可执行的,然后发给盆友吧,我就是这么做的。

需要改进的地方:

1. Shao说,最好可以手输URL或者读取配置文件的URL,获取图片,要是文件夹名称可以自己定义就更好了,可以弄

2. 页面结束判断没有做啊,到时候页面不存在就会报404,程序也会退出了,需改进

3. 在存储图片的时候,取的是原图的7位名称(src中URL后11位),如果不够7位就会报错,我之前的做法是用当前时间+随机字母+文件名后一位作为新的图片的文件名,但是这么操作也有问题,就是如果我重新爬的话,图片会重复,有待商榷

4. 如果用上多线程抓取和分布式抓取,就更好了,效率更高

5. 抓取的频率也不要太快,如果被检测了,就抓不到了,最好写个延时

需要注意的地方:

Python对缩进是非常非常非常之敏感的,如果你的编码过程中出现以下提示

那就是说明你空格和Tab用混了,不要慌不要急,按照以下方法来:全选——Alt+F5,轻松搞定

然后附上豆瓣妹子和暴走漫画的抓取结果吧,暴漫的话,留着自己慢慢看,也可以放到自己的网站里,豆瓣妹子嘛,还在犹豫什么宅男们,赶快收藏吧:

最后的最后,附上豆瓣妹子和暴走漫画的代码:

暴走漫画:

# -*- coding:utf8 -*-
# 2013.12.36 19:41 wnlo-c209
# 抓取dbmei.com的图片。from bs4 import BeautifulSoup
import os, sys, urllib2,time,random# 创建文件夹,昨天刚学会
path = os.getcwd()                      # 获取此脚本所在目录
new_path = os.path.join(path,u'暴走漫画')
if not os.path.isdir(new_path):os.mkdir(new_path)def page_loop(page=1):url = 'http://baozoumanhua.com/all/hot/page/%s?sv=1389537379' % pagecontent = urllib2.urlopen(url)soup = BeautifulSoup(content)my_girl = soup.find_all('div',class_='img-wrap')for girl in my_girl:jokes = girl.find('img')link = jokes.get('src')flink = linkprint flinkcontent2 = urllib2.urlopen(flink).read()#with open(u'暴走漫画'+'/'+time.strftime('%H-%M-%S')+random.choice('qwertyuiopasdfghjklzxcvbnm')+flink[-5:],'wb') as code:          #在OSC上现学的with open(u'暴走漫画'+'/'+flink[-11:],'wb') as code:code.write(content2)page = int(page) + 1print u'开始抓取下一页'print 'the %s page' % pagepage_loop(page)page_loop()

豆瓣妹子:

# -*- coding:utf8 -*-
# 2013.12.36 19:41 wnlo-c209
# 抓取dbmei.com的图片。from bs4 import BeautifulSoup
import os, sys, urllib2# 创建文件夹,昨天刚学会
path = os.getcwd()                      # 获取此脚本所在目录
new_path = os.path.join(path,u'豆瓣妹子')
if not os.path.isdir(new_path):os.mkdir(new_path)def page_loop(page=0):url = 'http://www.dbmeizi.com/?p=%s' % pagecontent = urllib2.urlopen(url)soup = BeautifulSoup(content)my_girl = soup.find_all('img')   # 加入结束检测,写的不好....if my_girl ==[]:print u'已经全部抓取完毕'sys.exit(0)print u'开始抓取'for girl in my_girl:link = girl.get('src')flink = 'http://www.dbmeizi.com/' + linkprint flinkcontent2 = urllib2.urlopen(flink).read()with open(u'豆瓣妹子'+'/'+flink[-11:],'wb') as code:#在OSC上现学的code.write(content2)page = int(page) + 1print u'开始抓取下一页'print 'the %s page' % pagepage_loop(page)page_loop()

Python+BeautifulSoup抓取暴走漫画页面图片相关推荐

  1. python学习-抓取知乎图片

    python学习-抓取知乎图片 #!/bin/usr/env python3__author__ = 'nxz'""" 抓取知乎图片 webdriver Chromedr ...

  2. 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享

    本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...

  3. gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享

    本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...

  4. Python爬虫抓取指定网页图片代码实例

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 想 ...

  5. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

  6. python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容

    利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...

  7. python+ BeautifulSoup抓取“全国行政区划信息查询平台”的省市区信息

    全国行政区划信息查询平台地址:http://xzqh.mca.gov.cn/map 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载js ...

  8. python抓取股票竞价数据_【整理】用Python+beautifulsoup抓取股票数据

    [刚开始写总结,读者如果对我的内容有任何建议欢迎留言反馈,或直接加QQ1172617666,期待交流] 先贴上代码,再详细的写一下在写这些代码的过程中遇到的问题,解决的方法. 这些代码完成的任务是:访 ...

  9. python爬虫抓取淘宝图片

    训练模型需要data,于是从网上抓取相关图片集,之后进行筛选标注. import urllib.request import rekeyword = '骚猪'#定义搜索关键字 keyword = ur ...

最新文章

  1. ECUG 全球技术大会重回上海!
  2. swift-初探webView与JS交互
  3. 图论中的知识点(等待补充和更新)
  4. make的使用和Makefile规则和编程及其基本命令(简单)
  5. 微信为什么不丢消息?
  6. JZOJ 1321. 灯
  7. ajax的核心有哪些,ajax的核心
  8. 【Algorithm】冒泡排序
  9. Java归去来第3集:Eclipse中给动态模块升级
  10. Julia-整数和浮点数
  11. StarUml:Exception EOleSysError in module StarUML.ex
  12. WORKBENCHSCDM导入CAD文件报错?
  13. java创建窗口_java如何创建一个窗口出来
  14. 手机游戏后台服务整体架构
  15. Linux中MISC驱动简介及其简单使用
  16. CKFinder3.5.1整合springboot修复bug免费
  17. 关于计算机语言最高奖项 图灵奖 的12位得主!你认识几个?
  18. OA系统与MES系统的异同点
  19. 改变世界的十大经典物理实验及十大著名思想实验
  20. 新闻与传播c刊_传媒湃|3本新闻传播类期刊入围新版C刊扩展目录

热门文章

  1. Linux安装jdk9
  2. 相约2008:2008是一个合数,求出此合数最多由多少个最小不同质数和组成, 并按要求从小到大输出这些质数
  3. python drf_python-Django DRF更新用户
  4. 儿童七彩浏览器 隐私声明
  5. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习
  6. nginx-负载均衡反向代理
  7. c# 定位内存快速增长_C#和halcon的混编程序出现序内存泄露、句柄持续增加、视觉程序运行越来越慢等问题的处理...
  8. Android开发:集成高德地图实现定位、检索周边地址
  9. 扫描件转化为word文档_如何将旧文档转换为Word 2013
  10. TouchSlide.js的使用