学习python两个星期,看了些基础的知识,感觉记不住多少啊,脑子有点木。想找些涉及生活的有趣的程序练练手,巩固下各种模块和对象方法的知识。就无意发现了一个暴走漫画的爬虫程序,感觉不错,就自己跟着思路编,原作者用的是python3.3的,我的是python2.7,感觉还是有很多的不同的。跟着原作者的思路基础上,对各个方面有了新的认识,贴出来,为的是自己以后想翻阅相关知识的时候不用东翻西找的。
# -*- coding: gbk -*-
import os
import urllib2
import bs4
import urllib
#--------------创建文件夹----------------
path=os.getcwd()
path=os.path.join(path,'暴走漫画GIF')
if not os.path.exists(path):
os.mkdir(path)
#---------------------------------------
page_sum=int(raw_input("想看多少页:"))
url="http://baozoumanhua.com/gif/month/"
for count in range(page_sum):
req=urllib2.Request(url=url+'page/'+str(count+1))
content=urllib2.urlopen(req).read()
soup=bs4.BeautifulSoup(content)
img_content=soup.findAll('img',attrs={'style':'width:460px'})
url_list=[img['src'] for img in img_content]
title_list=[img['alt'] for img in img_content]
for j in range(len(title_list)):
title_list[j]=title_list[j].encode('gbk')
for i in range(len(url_list)):
imgurl=url_list[i]
filename=path+'\\'+title_list[i]+'.gif'
print filename+"#来自于#"+str(imgurl)
urllib.urlretrieve(imgurl,filename)
先是对os模块不太熟悉,查阅资料。第一次使用自己曾经下了没有用过的BeautifulSoap,感觉确实比自己读网页源代码的爽。最后,遇到最恼火的就是编码问题了,以前对unicode,utf-8,gbk编码只知道点皮毛,只知道有汉字了,可以用这些编码,所以运行代码一直提示
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
之后才明白其中的差异,原作者用的是utf-8的,我最后修改后发现用gbk的时候才不会出现乱码。有汉字的情况下一定要注意呀!悲惨的教训!感觉这个程序运行起来听有意思的,我之后还想做更多的修改,让它功能更强大吧。文章比较水,各位看看就好,勿喷啊~