为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Beautiful Soup 获取 `p` 标签内的文本?

如何使用 Beautiful Soup 获取 `p` 标签内的文本?

牛魔王的故事 2023-03-16 11:15:10
我想获取所有 p 标签并将其存储在列表中,但不幸的是它们之间都有一个。这是内容的样子:<p>Ich halt mir die Pistole an den Kopf <br/>Doch drück' nicht ab, denn ich hab zu viel Angst vor Gott</p>, <p>Feinde wurden zu Brüdern <br/>Und Brüder wurden zu V-Männern <br/>Die beste Gang, in der ich jemals war <br/>Me, myself und meine DNA</p>,我应该看起来像:[Ich halt mir die Pistole an den Kopf    Doch drück' nicht ab, denn ich hab zu viel Angst vor Gott, Feinde wurden zu Brüdern     Und Brüder wurden zu V-Männern     Die beste Gang, in der ich jemals war     Me, myself und meine DNA,] 那是我当前的代码:url = requests.get("https://www.myzitate.de/suche/farid-bang/")z = bs(url.content)cont = z.find("div", attrs={"id":"cont"})cont.find_all("p")
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您可以使用tag.get_text()with 参数strip=True并separator='\n'获得正确的文本:


import requests

from bs4 import BeautifulSoup



url = 'https://www.myzitate.de/suche/farid-bang/'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')


for p in soup.select('p'):

    print(p.get_text(strip=True, separator='\n'))

    print('-' * 80)

印刷:


Ich halt mir die Pistole an den Kopf

Doch drück' nicht ab, denn ich hab zu viel Angst vor Gott

--------------------------------------------------------------------------------

Feinde wurden zu Brüdern

Und Brüder wurden zu V-Männern

Die beste Gang, in der ich jemals war

Me, myself und meine DNA

--------------------------------------------------------------------------------

Wir sind Public Enemy

Ihr Police Academy

Kann nicht tanzen, meine Schultern sind zu breit

Du willst mich batteln und frisst dann den Bürgersteig

--------------------------------------------------------------------------------

Wir kam'n von unten mit Gangsta-Rap

Und sind im Endeffekt drei Gs wie das Handynetz

--------------------------------------------------------------------------------


...and so on.


查看完整回答
反对 回复 2023-03-16
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这是你要找的吗?

ps = [p.get_text() for p in cont.find_all("p")]


查看完整回答
反对 回复 2023-03-16
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

所有项目都位于可以通过以下id方式z访问的


page_soup.find_all('div', {'id': 'z'}):

在某些网站中,存在 p 标签的多个实例,因此我通常会搜索 upper class 以确保获得预期的输出。


您感兴趣的文本在 中并可p tag通过以下方式检索


div_tag.find_all('p')

完整代码如下:


append_text=[]

url = requests.get("https://www.myzitate.de/suche/farid-bang/")

page_soup= Soup(url.content)

for div_tag in page_soup.find_all('div', {'id': 'z'}):

    for litag in div_tag.find_all('p'):

        append_text.append(litag.text)


查看完整回答
反对 回复 2023-03-16
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信