编写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中的模块导入和读取键盘输入的方法
Oct 16 Python
详解supervisor使用教程
Nov 21 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
详解django2中关于时间处理策略
Mar 06 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
python函数中将变量名转换成字符串实例
May 11 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
基于flask实现五子棋小游戏
May 25 Python
python中pymysql包操作数据库方法
Apr 19 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
浅谈PHP封装CURL
2019/03/06 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
js 居中漂浮广告
2010/03/21 Javascript
js原型链原理看图说明
2012/07/07 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
js常用DOM方法详解
2017/02/04 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
奥巴马演讲稿
2014/01/08 职场文书
就职演讲稿范文
2014/05/19 职场文书
运动会闭幕词
2015/01/28 职场文书
环保守法证明
2015/06/24 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python