编写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监控linux内存并写入mongodb(推荐)
Sep 11 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
python中reader的next用法
Jul 24 Python
python 接收处理外带的参数方法
Dec 03 Python
python文件拆分与重组实例
Dec 10 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
pandas数据处理进阶详解
Oct 11 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
jupyter notebook 多行输出实例
Apr 09 Python
Python多线程 Queue 模块常见用法
Jul 04 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
Pillow图像处理库安装及使用
Apr 12 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
基于vue.js实现的分页
2018/03/13 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
Python卸载模块的方法汇总
2016/06/07 Python
python中的decorator的作用详解
2018/07/26 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
python range实例用法分享
2020/02/06 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
淘宝好评语大全
2014/05/05 职场文书
毕业生面试求职信
2014/06/23 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python