猿问

问题: 抓到的URL有些是相对路径,怎么识别出来然后让他自动把URL连接上?

现在程序:
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

慕容森
浏览 155回答 2
2回答

慕丝7291255

可以在start_a里面改,一般是相对路径的话,都不是以http://开头的。所以你得判断一下,是否以http开头,否则,进行添加路径名的操作。可以用find来做。比如if href.find("http://") == 0:_____pass #no dealelse:_____addurl(href)关于路径名的话,一般就是 域名 + 当前相对路径,当然,也可以将正在爬的本页域名当参数传入,具体分情况处理。

慕哥6287543

不过,不知道这几种相对路径都代表什么啊?path/path..../path...函数addurl需要分类讨论,来加域名,或者当前网页的路径
随时随地看视频慕课网APP
我要回答