python 网络爬虫(一) 简单demo

来源:互联网 发布:java那些模式 编辑:程序博客网 时间:2024/04/28 05:14

用python写爬虫的最简单的版本。

效果是把目标URL的所有想要的URL抓出来。

URLLister.py

from sgmllib import SGMLParserclass URLLister(SGMLParser):    def reset(self):        SGMLParser.reset(self)        self.urls = []        self.imgs = []    def start_a(self,attrs):        href = [v for k, v in attrs if k == 'href']        if href:            self.urls.extend(href)    def start_img(self,attrs):        img = [v for k, v in attrs if k == 'src']        if img:            self.imgs.extend(img)    
科普1:append() 和extend() 一开始没有注意,前者是在列表尾追加一个元素,后者是追加一个列表。

科普2:href = [v for k, v in attrs if k == 'href'] 返回一个匹配key值为'href'的values的集合。

科普3:class中的元素,都要用self来引用,不加就是全局变量啦。


test.py

import urllib,URLListerparser = URLLister.URLLister()url = urllib.urlopen("http://www.baidu.com")parser.feed(url.read())url.close()parser.close()for u in parser.urls:    print ufor i in parser.imgs:    print i
科普4:urllib在python标准库中。

科普5:urlopen() 如文件对象一般,打开一个web url,所以也要close()。

科普6:SGMLParser的feed(str)就是把str填充给SGMLParser去解析。