Python 始
一直想找个时间来学Python,这次遇到一个收集网页信息的任务,终于可以给自己个借口来学学了。一开始还觉得又要重新学习一门新语言是很麻烦的一件事。后来被我应证了Python真的很简单(当然这是建立在你能顺利搭好环境,找到对应的模块才,环境配置网上到处都是,我在这就不多说了)
下面就通过我这个简短的例子来向大家展示一下Python的美吧:
程序任务:收集视频网页上视频的缩略图,保存到本地文件。
环境:Eclipse+PyDev
版本:Python3.2.2+BeautifulSoup4
import urllib.request,sys
import itertools,re
from bs4 import BeautifulSoup
ur = urllib.request
url_i = 1
pic_num = 1
#自定义的引号格式转化函数
def _en_to_cn(str):
obj = itertools.cycle(['“','”'])
_obj = lambda x: next(obj)
return re.sub(r"['\"]",_obj,str)
if __name__=='__main__':
while url_i <= 30:
webContent = ur.urlopen("http://news.youku.com/focus/index/_page26716_" + str(url_i) + ".html")
data = webContent.read()
soup = BeautifulSoup(data)
tag = soup.img
print("-----------------------Page " + str(url_i) +"-------------------------")
for item in soup.find_all(tag.name):
for attr in item.attrs:
if attr == 'title':
ur.urlretrieve(item['src'], "D:\\Thumbnails\\" + str(pic_num) + "." + _en_to_cn(item['title']) + ".jpg")
pic_num += 1
print("----OK,Page " + str(url_i) +" has finished!")
url_i += 1
程序很简短,可以将优酷上任意连续多个页面的视频缩略图都保存下来。程序的关键就是用到了BeautifulSoup这个用于解析网页的第三方包,这个包的官方网页是:
http://www.crummy.com/software/BeautifulSoup/,其中有很详细的文档可以参考。
PS:另外在实际编程时发现,很多视频的标题中含有很多引号,一些是中文格式的引号,一些是英文格式的。而Windows下英文格式的引号在文件名中是被视为非法字符的,所以就自定义了一个函数_en_to_cn用于将含有英文引号的字符串转化成中文引号。
通过这个例子可以清楚的反映出Python的优势,特别实在互联网的应用和自然语言处理方面上,这更加坚定了我学习Python的决心。共勉~