编写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异常和文件处理机制详解
Jul 19 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python 串行执行和并行执行实例
Apr 30 Python
Python多分支if语句的使用
Sep 03 Python
python爬虫调度器用法及实例代码
Nov 30 Python
Python中Qslider控件实操详解
Feb 20 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/01/11 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
python重试装饰器示例
2014/02/11 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
python 写一个文件分发小程序
2020/12/05 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
Java基础知识面试要点
2016/07/29 面试题
幼儿园小班评语
2014/04/18 职场文书
计生工作先进事迹
2014/08/15 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
商场周年庆活动方案
2014/08/19 职场文书
老龙头导游词
2015/02/11 职场文书
跑出一片天观后感
2015/06/08 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server