编写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常用知识点汇总
May 08 Python
Python实现全排列的打印
Aug 18 Python
python调用百度REST API实现语音识别
Aug 30 Python
python GUI实现小球满屏乱跑效果
May 09 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 Python
如何用python插入独创性声明
Mar 31 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
基于Python __dict__与dir()的区别详解
2017/10/30 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
keras.layer.input()用法说明
2020/06/16 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
SQL中where和having的区别
2012/06/17 面试题
美发活动策划书
2014/01/14 职场文书
八年级英语教学计划
2015/01/23 职场文书
家长会欢迎词
2015/01/23 职场文书
办公室个人总结
2015/02/28 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏