【问题标题】:How to get text within the `p` tag using Beautiful Soup?如何使用 Beautiful Soup 在“p”标签中获取文本?
【发布时间】:2020-07-18 13:56:22
【问题描述】:

我想获取所有 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")

【问题讨论】:

标签: python web-scraping beautifulsoup


【解决方案1】:

这就是你要找的吗?

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

【讨论】:

    【解决方案2】:

    您可以使用tag.get_text() 和参数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.
    

    【讨论】:

      【解决方案3】:

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

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

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

      您感兴趣的文本位于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)
      

      【讨论】:

        猜你喜欢
        • 2011-01-18
        • 2021-01-24
        • 2019-11-08
        • 2021-01-23
        • 2021-12-28
        • 2019-05-30
        • 2021-02-22
        • 1970-01-01
        • 2020-08-24
        相关资源
        最近更新 更多