現在程序:class URLLister(SGMLParser):def reset(self):SGMLParser.reset(self)self.urls = []def start_a(self, attrs):href = [v for k, v in attrs if k=='href']if href:self.urls.extend(href)f = urllib2.urlopen("http://www.baidu.com/")if f.code == 200:parser = URLLister()parser.feed(f.read())f.close()for url in parser.urls:print url
2 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
可以在start_a里面改,一般是相對路徑的話,都不是以http://開頭的。所以你得判斷一下,是否以http開頭,否則,進行添加路徑名的操作。
可以用find來做。比如
if href.find("http://") == 0:
_____pass #no deal
else:
_____addurl(href)
關于路徑名的話,一般就是 域名 + 當前相對路徑,
當然,也可以將正在爬的本頁域名當參數傳入,具體分情況處理。

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
不過,不知道這幾種相對路徑都代表什么?。?br/>path
/path...
./path...
函數addurl需要分類討論,來加域名,或者當前網頁的路徑
添加回答
舉報
0/150
提交
取消