2013-03-18 80 views
0

我使用beautifulsoup從網頁上刮取網址。一切都很順利,直到有些網址中有非ascii字符。BeautifulSoup的'href'列表給出了不明確的TypeErrors?

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類型。它似乎是說,他們是Noneunicode在同一時間。

回答

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] 
+0

我看到在列表中的「#內容」,但是,當我檢查的類型它仍然顯示'unicode'。謝謝,我會試試這個。 – tijko 2013-03-18 09:32:09