Python爬虫:暴走漫画上的GIF趣图

寒假里有心重新学习Python,本科小学期有用Python写过一个web应用,但忘的差不多了。现在想系统地学习Python,所以把《Head First Python》看完了。HeadFirst的书内容有趣且有实例贯穿,但是知识和技巧都打乱在各个章节中了,看完后对Python还是没有系统地了解。所以现在一边写爬虫一边看《Dive into Python》带着学习Python。

实现的第一个爬虫是抓取暴走漫画上的GIF趣图,方便离线观看。爬虫用的是python3.3开发的,主要用到了urllib.requestBeautifulSoup模块。

注:BeautifulSoup是第三方库,我使用的是bs4urllib2在python3中被分配到了urllib.request中,文档中的原文如下。

Note:The urllib2 module has been split across several modules in Python 3 named urllib.request and urllib.error.

爬虫源代码如下:

# -*- coding: utf-8 -*-

#---------------------------------------
# 程序:暴走漫画的GIF趣图爬虫
# 版本: 0.1
# 作者:WuChong
# 日期:2014-01-27
# 语言:Python 3.3
# 说明:能自定义下载页数,默认全部下载,未加多线程功能
#---------------------------------------

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/month/page/" #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」的文件夹,所有的图片会自动下载到该目录中。

这些GIF都特有意思,我选了一些分享到了百度云,有意者可以去下载,真乃居家旅行、调节心情之必备良品!