gpt4 book ai didi

Python Beautiful Soup .content 属性

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:02 26 4
gpt4 key购买 nike

BeautifulSoup 的 .content 有什么作用?我正在处理 crummy.com's教程,我真的不明白 .content 的作用。我看过论坛,但没有看到任何答案。查看下面的代码....

from BeautifulSoup import BeautifulSoup
import re



doc = ['<html><head><title>Page title</title></head>',
'<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
'<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
'</html>']

soup = BeautifulSoup(''.join(doc))
print soup.contents[0].contents[0].contents[0].contents[0].name

我希望代码的最后一行打印出“body”而不是...

  File "pe_ratio.py", line 29, in <module>
print soup.contents[0].contents[0].contents[0].contents[0].name
File "C:\Python27\lib\BeautifulSoup.py", line 473, in __getattr__
raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
AttributeError: 'NavigableString' object has no attribute 'name'

.content 只关心html、head 和title 吗?如果是,那是为什么?

提前感谢您的帮助。

最佳答案

它只为您提供标签内部的内容。让我举个例子:

html_doc = """
<html><head><title>The Dormouse's story</title></head>

<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
head = soup.head

print head.contents

上面的代码给了我一个列表,[<title>The Dormouse's story</title>] ,因为那是 inside head标签。所以打电话[0]会给你列表中的第一项。

你得到错误的原因是因为 soup.contents[0].contents[0].contents[0].contents[0]返回没有更多标签的东西(因此没有属性)。它返回 Page Title从你的代码中,因为第一个 contents[0]给你 HTML 标签,第二个给你 head标签。第三个导致 title标签,第四个给你实际的内容。所以,当你调用 name在它上面,它没有给你的标签。

如果你想打印正文,你可以这样做:

soup = BeautifulSoup(''.join(doc))
print soup.body

如果你想要body使用 contents只有,然后使用以下内容:

soup = BeautifulSoup(''.join(doc))
print soup.contents[0].contents[1].name

您不会使用 [0] 获取它作为索引,因为 bodyhead之后的第二个元素.

关于Python Beautiful Soup .content 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com