我已经建立了一个带有 for 循环的网络爬虫。我不知道为什么,但它返回一个 url(这是我希望它返回的),然后在获取列表中的下一个 url 之前,它返回一个 NoneType 对象。除了使脚本变慢之外,这没什么大不了的,如果不是因为我不能让它打印比第一个 url 更多的内容。
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”对象吗?谢谢一堆。