0

Beautifulsoup を使用して Web ページから URL をスクレイピングしています。一部の 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
そこで、このリスト内包表記を 2 つの部分に分けることにしました。

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]

すべてのユニコードタイプを示しました。彼らは同時にそうであるNoneと言っているようです。unicode

4

1 に答える 1

1

値を見逃したに違いありませんNone。私がチェックwww.reddit.comしたところ、確かに、次のようなものがあります。

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

その href はNone. すべての値を出力して手動で検索する代わりにNone、次のことができます。

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 に答える