gpt4 book ai didi

python - 是否可以使用 BeautifulSoup 获取没有类或 ID 的标签?

转载 作者:行者123 更新时间:2023-12-05 03:57:16 24 4
gpt4 key购买 nike

我有数千个 HTML 站点,我正试图从这些站点中过滤文本。

我正在用漂亮的汤做这个。 get_text()从这些网站给我很多不必要的信息。

因此我写了一个循环:

l = []
for line in text5:
soup = bs(line, 'html.parser')
p_text = ' '.join(p.text for p in soup.find_all('p'))
k = p_text.replace('\n', '')
l.append(k)

但是这个循环给了我以 <p 开头的标签中的所有内容.

例如:

我想要两个普通 <p> 之间的所有东西标签。但我也从这样的事情中得到了内容:

<p class="header-main__label"> bla ba </p> .

我可以告诉 BeautifulSoup 只得到普通的 <p> 吗?标签?

最佳答案

你可以为classid设置False,它会得到没有class的标签编号

soup.find_all('p', {'class': False, 'id': False})

或者(单词class__因为Python中有关键字class)

soup.find_all('p', class_=False, id=False)

from bs4 import BeautifulSoup as BS

text = '<p class="A">text A</p> <p>text B</p> <p id="C">text C</p>'

soup = BS(text, 'html.parser')

# ----

all_items = soup.find_all('p', {'class': False, 'id': False})

for item in all_items:
print(item.text)

# ---

all_items = soup.find_all('p', class_=False, id=False)

for item in all_items:
print(item.text)

编辑:如果您想要没有任何属性的标签,那么您可以使用 not item.attrs

过滤项目
for item in all_items:
if not item.attrs:
print(item.text)

from bs4 import BeautifulSoup as BS

text = '<p class="A">text A</p> <p>text B</p> <p id="C">text C</p> <p data="D">text D</p>'

soup = BS(text, 'html.parser')

all_items = soup.find_all('p')

for item in all_items:
if not item.attrs:
print(item.text)

关于python - 是否可以使用 BeautifulSoup 获取没有类或 ID 的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747286/

24 4 0