python - 如何只打印 BeautifulSoup 值?

标签 python web-scraping beautifulsoup mechanize

我已经构建了一个带有 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”对象吗?非常感谢。

最佳答案

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

这部分代码:

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 - 如何只打印 BeautifulSoup 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829553/

相关文章:

Python - 在同一行打印

python - 在 Windows 上编译 scikit-image 来运行测试

python - 从 parent 实例化 child

python - Scrapy 蜘蛛在并行进程中的多处理

python - 如何从变量中获取数据并将其放入另一个变量中

python - 如何将包含跨越多列的单元格的 html 表格转换为 Python 3 中的列表列表?

BeautifulSoup、requests 和 lxml 的 Python 解码错误

python - 如何从原始(二进制)ctype 缓冲区构建 python 字符串?

python - 使用 Python scipy.optimize 进行双层优化

excel - 使用 XMLHTTP 方法时获取表头