我已经为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