我已經爲for-loop構建了一個webscraper。我不知道爲什麼,但它返回一個url(這是我想要它返回的),然後在獲取列表中的下一個url之前,它返回一個NoneType對象。除了使腳本變慢,這不是什麼大問題,如果它不是因爲我不能打印比第一個url更多的內容。如何僅打印BeautifulSoup值?
from BeautifulSoup import BeautifulSoup
from mechanize import Browser
br = Browser()
page = br.open("https://bdkv2.borger.dk/foa/Sider/default.aspx?fk=22&foaid=11541520")
html = page.read()
soup = BeautifulSoup(html)
link = soup.findAll('a')
kommunelink = link[21:116]
for kommune in kommunelink:
kommuneside = br.open(kommune['href'])
html2 = kommuneside.read()
soup2 = BeautifulSoup(html2)
hjemmesidelink = soup2.find('a', id='_uscAncHomesite')
print hjemmesidelink['href']
這樣,我的輸出是這樣的:
http://www.albertslund.dk
Traceback (most recent call last):
File "C:\Users\kba\Desktop\kommuneskraber.py", line 14, in <module>
print hjemmesidelink['href']
TypeError: 'NoneType' object has no attribute '__getitem__'
我試着用一樣的東西瞎搞:如果變量==特定的類,然後印刷,但不起作用。例如:
If hjemmesidelink['href'] == <class 'BeautifulSoup.Tag'>:
print hjemmesidelink['href']
if hjemmesidelink.class == BeautifulSoup.Tag:
print hjemmesidelink['href']
任何想法應該如何?或者,甚至更好,任何想法,爲什麼我的腳本每次迭代通過循環時都會獲取'NoneType'對象?謝謝一堆。
上面的代碼中的縮進是錯誤的,您能否確保您的代碼與您的python腳本完全相同? – 2012-08-06 14:00:51
您仍然需要修復for循環中的縮進。 – 2012-08-06 14:22:15
現在應該修復。 – kabp 2012-08-06 14:23:13