Python 如何仅打印美化组值?

Python 如何仅打印美化组值?,python,web-scraping,beautifulsoup,mechanize,Python,Web Scraping,Beautifulsoup,Mechanize,我已经构建了一个带有for循环的webscraper。我不知道为什么,但它返回一个url(这是我希望它返回的),然后在获取列表中的下一个url之前,它返回一个非类型对象。除了让脚本速度变慢之外,如果不是因为我无法让它打印出超过第一个url的内容,那也没什么大不了的 from BeautifulSoup import BeautifulSoup from mechanize import Browser br = Browser() page = br.open("https://bdkv2.bo

我已经构建了一个带有for循环的webscraper。我不知道为什么,但它返回一个url(这是我希望它返回的),然后在获取列表中的下一个url之前,它返回一个非类型对象。除了让脚本速度变慢之外,如果不是因为我无法让它打印出超过第一个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__'
http://www.albertslund.dk
回溯(最近一次呼叫最后一次):
文件“C:\Users\kba\Desktop\kommuneskraber.py”,第14行,在
打印hjemmesidelink['href']
TypeError:“非类型”对象没有属性“\uuuu getitem\uuuu”
我曾经尝试过这样的东西:如果变量==特定类,那么打印,但这不起作用。例如:

If hjemmesidelink['href'] == <class 'BeautifulSoup.Tag'>:
    print hjemmesidelink['href']

if hjemmesidelink.class == BeautifulSoup.Tag:
    print hjemmesidelink['href']
如果hjemmesidelink['href']=:
打印hjemmesidelink['href']
如果hjemmesidelink.class==BeautifulSoup.Tag:
打印hjemmesidelink['href']

你知道应该怎么做吗?或者甚至更好,你知道我的脚本在哪里/为什么每秒迭代循环时都会获取一个“NoneType”对象吗?非常感谢。

这不是一个完整的答案,但是如果你看一下评论,这将回答关于不产生错误的部分

在代码的这一部分:

print hjemmesidelink['href']
替换为:

if hjemmesidelink:
    print hjemmesidelink['href']
if-hjemmesidelink:
检查
hjemmesidelink
是否有值,如果有,则打印,如果没有,则继续循环

我的结果:

>>> 
http://www.albertslund.dk
http://www.alleroed.dk
http://www.assens.dk
http://www.ballerup.dk
http://www.billund.dk
http://www.brk.dk
http://www.brondby.dk
http://www.broenderslev.dk
http://www.dragoer.dk

和计数。

上面代码中的缩进是错误的,您能确保它与python脚本中的缩进完全相同吗?您仍然需要修复for循环中的缩进。好吧,好吧,看来您的问题不完全是代码,而是
hjemmesidelink=soup2.find('a',id=''uscAncHomesite')
在循环的第二次运行中找不到任何内容,因此尝试访问其中的
'href'
将不起作用。我不知道为什么每运行一秒都会返回一个我无法打印的“非类型”对象,但我希望找到一种方法,如果它真的找到了href,它只打印。类似于(以非Python的方式编写,但我希望您理解这一点):如果hjemmesidelink.class==BeautifulSoup.tag是真的,那么:print hjemmesidelink令人惊讶。这正是我所希望的,但很简单。我仍然不明白为什么它会在它获取的每个url之间找到一个非类型对象,但这解决了问题。非常感谢!