编写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  连接字符串(join %)
Sep 06 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python 定时器,轮询定时器的实例
Feb 20 Python
python实现日志按天分割
Jul 22 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python实现简单图书管理系统
Nov 22 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
如何在python中实现线性回归
Aug 10 Python
Python实现为PDF去除水印的示例代码
Apr 03 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
APMServ使用说明
2006/10/23 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jQuery实现跨域
2015/02/03 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python super用法及原理详解
2020/01/20 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
小学教师的个人自我鉴定
2013/10/24 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
委托书如何写
2014/08/30 职场文书
2015年电工工作总结
2015/04/10 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2016春季小学开学寄语
2015/12/03 职场文书