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


Posted in Python onApril 20, 2016

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

urllib模块提供了从万维网中获取数据的高层接口,当我们用urlopen()打开一个URL时,就相当于我们用Python内建的open()打开一个文件。但不同的是,前者接收一个URL作为参数,并且没有办法对打开的文件流进行seek操作(从底层的角度看,因为实际上操作的是socket,所以理所当然地没办法进行seek操作),而后者接收的是一个本地文件名。

Python的BeautifulSoup模块,可以帮助你实现HTML和XML的解析
先说一下,一般写网页爬虫,即抓取网页的html源码等内容,然后分析,提取相应的内容。
这种分析html内容的工作,如果只是用普通的正则表达式re模块去一点点匹配的话,对于内容简单点的网页分析,还是基本够用。
但是对于工作量很大,要解析内容很繁杂的html,那么用re模块,就会发现无法实现,或很难实现。
而使用beautifulsoup模块去帮你实现分析html源码的工作的话,你就会发现,事情变得如此简单,极大地提高了分析html源码的效率。
注:BeautifulSoup是第三方库,我使用的是bs4。urllib2在python3中被分配到了urllib.request中,文档中的原文如下。
Note:The urllib2 module has been split across several modules in Python 3 named urllib.requestand urllib.error.
爬虫源代码如下

# -*- coding: utf-8 -*-

import urllib.request
import bs4,os

page_sum = 1 #设置下载页数

path = os.getcwd()
path = os.path.join(path,'暴走GIF')
if not os.path.exists(path):
  os.mkdir(path)                 #创建文件夹

url = "http://baozoumanhua.com/gif/year"   #url地址
headers = {                     #伪装浏览器
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
         ' Chrome/32.0.1700.76 Safari/537.36'
}

for count in range(page_sum):
  req = urllib.request.Request(
    url = url+str(count+1),
    headers = headers
  )
  print(req.full_url)
  content = urllib.request.urlopen(req).read()

  soup = bs4.BeautifulSoup(content)          # BeautifulSoup
  img_content = soup.findAll('img',attrs={'style':'width:460px'})

  url_list = [img['src'] for img in img_content]   #列表推导 url
  title_list = [img['alt'] for img in img_content]  #图片名称

  for i in range(url_list.__len__()) :
    imgurl = url_list[i]
    filename = path + os.sep +title_list[i] + ".gif"
    print(filename+":"+imgurl)             #打印下载信息
    urllib.request.urlretrieve(imgurl,filename)    #下载图片

在第15行可以修改下载页数,将此文件保存为baozougif.py,使用命令python baozougif.py运行后在同目录下会生成「暴走GIF」的文件夹,所有的图片会自动下载到该目录中。

Python 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
对Django外键关系的描述
Jul 26 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 #Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 #Python
详解Python命令行解析工具Argparse
Apr 20 #Python
利用Python如何生成随机密码
Apr 20 #Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 #Python
python实现简单socket通信的方法
Apr 19 #Python
python实现域名系统(DNS)正向查询的方法
Apr 19 #Python
You might like
php引用传值实例详解学习
2013/11/06 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
jQuery live
2009/05/15 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
python中的多重继承实例讲解
2014/09/28 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python中partial()基础用法说明
2018/12/30 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Python实现直播推流效果
2019/11/26 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
什么是接口(Interface)?
2013/02/01 面试题
产品销售员岗位职责
2013/12/18 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
酒鬼酒广告词
2014/03/21 职场文书
村抢险救灾方案
2014/05/09 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
2014年社区个人工作总结
2014/12/02 职场文书