0

我正在使用 beautifulsoup 从网页中抓取网址。一切都很顺利,直到某些 url 中包含非 ascii 字符。

requests.get('http://www.reddit.com')
soup = BeautifulSoup(req.content)

urls = [i.get('href') for i in soup.findAll('a') if
        'keyword' in str(i.get('href'))]

列表推导将返回一个UnicodeError.
所以我想把这个列表理解分成两部分:

urls = [i.get('href') for i in soup.findAll('a')]

urls = [i.encode('utf-8') for i in urls]

这是我拿到的时候AttributeError,说是物品NoneType

我检查了他们的类型:

print [type(i) for i in urls]

其中显示了所有 unicode 类型。似乎在说他们是None并且unicode同时。

4

1 回答 1

1

你一定错过了None价值。我查了一下www.reddit.com,果然有:

<a name="content"></a>

它的href是NoneNone您可以执行以下操作,而不是打印所有值并手动搜索:

urls = [(i, i.get('href')) for i in soup.findAll('a')]
print [u for u in urls if u[1] is None]
于 2013-03-18T09:30:00.480 回答