在python中使用一个小的webspider,使用lxml模块,我有一段代码对文档进行xpath查询,并将来自'a href'标记的所有链接放入一个列表中。我想做的是检查每个链接,因为它被添加到列表中,如果需要,取消它的景观。我理解使用urllib.unquote()函数,但我遇到的问题是urllib方法抛出了一个异常,我认为这是由于传递给该方法的每个链接都不需要回避。谁能给我指出正确的方向吗?以下是我目前掌握的代码:
import urllib
import urllib2
from lxml.html import parse, tostring
class Crawler():
def __init__(self, url):
self.url = url
self.links = []
def crawl(self):
doc = parse("http://" + self.url).getroot()
doc.make_links_absolute(self.url, resolve_base_href=True)
for tag in doc.xpath("//a"):
old = tag.get('href')
fixed = urllib.unquote(old)
self.links.append(fixed)
print(self.links)
unquote
不引发异常,因为URL不需要转义。您没有向我们展示异常,但我猜问题是old
不是字符串,可能是None
,因为您有一个没有href
属性的<a>
标记。在在尝试使用
old
之前,请检查它的值。在你可以这样做。虽然我没有导致异常的url。所以这只是假设。看看这个方法是否有效。在
看看这个行不行?如果你能给出一个导致异常的URL的实际例子,那就太好了。什么例外?你能把这张纸贴出来吗?在
最坏的情况下,你总是可以用一个
try-except
绕过这个街区,继续你的生意。在或者在
try
..except
子句中包装urllib.unquote
。在相关问题 更多 >
编程相关推荐