编写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 相关文章推荐
python中反射用法实例
Mar 27 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python如何定义有默认参数的函数
Aug 10 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
Python深度学习之实现卷积神经网络
Jun 05 Python
python三子棋游戏
May 04 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
如何使用Strace调试工具
2013/06/03 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
node网页分段渲染详解
2016/09/05 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
Python中使用PDB库调试程序
2015/04/05 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
大学生毕业鉴定
2014/01/31 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
介绍信的格式
2015/01/30 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书