编写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函数式编程指南(三):迭代器详解
Jun 24 Python
Python批量修改文本文件内容的方法
Apr 29 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python中字符串与编码示例代码
May 20 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
python命名空间(namespace)简单介绍
Aug 10 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python调用shell命令常用方法(4种)
May 11 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 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 HTML无刷新提交表单
2016/04/05 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
FCK调用方法..
2006/12/21 Javascript
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
项目实践之javascript技巧
2007/12/06 Javascript
javascript document.images实例
2008/05/27 Javascript
在html页面中包含共享页面的方法
2008/10/24 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
删除节点的jquery代码
2014/01/13 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
python 运算符 供重载参考
2009/06/11 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python与pycharm有何区别
2020/07/01 Python
Django xadmin安装及使用详解
2020/10/26 Python
python中turtle库的简单使用教程
2020/11/11 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
24岁生日感言
2014/01/13 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
策划总监岗位职责
2014/02/16 职场文书
纪委立案决定书
2015/06/24 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js