【问题标题】:How to store a set of multiple p tag texts to a single variable in space delimit with BeautifulSoup in Python如何在 Python 中使用 BeautifulSoup 将一组多个 p 标签文本存储到空格分隔的单个变量中
【发布时间】:2021-08-20 17:04:31
【问题描述】:

在下面的示例中,如何使用 BeautifulSoup 将来自多个 HTML p 标签的文本存储在单个变量中,并使用空格分隔?我是 Python 的新手。谢谢!

from bs4 import BeautifulSoup

HTML = '''
</tr>
<td class="up">
<p class="pie_chart_val">+1.30%</p>
</td>
<td class="down">
<p class="pie_chart_val">-1.33%</p>
</td>
<td class="up">
<p class="pie_chart_val">+1.58%</p>
</td>
<td class="up">
<p class="pie_chart_val">+1.61%</p>
</td>
</tr>
'''

soup = BeautifulSoup(HTML, 'lxml')
values = soup.find_all('p', class_="pie_chart_val")
for value in values:
    value = value.text
    print(value)

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    print 语句本身中,您可以将end="," 作为参数在一行中进行回答

    from bs4 import BeautifulSoup
    
    html=  """<tr>
    <td class="up">
    <p class="pie_chart_val">+1.30%</p>
    </td>
    <td class="down">
    <p class="pie_chart_val">-1.33%</p>
    </td>
    <td class="up">
    <p class="pie_chart_val">+1.58%</p>
    </td>
    <td class="up">
    <p class="pie_chart_val">+1.61%</p>
    </td>
    </tr>
    """
    
    soup = BeautifulSoup(html, 'lxml')
    values = soup.find_all('p', class_="pie_chart_val")
    for value in values:
        print(value.text,end=",")
    

    输出:

    +1.30%,-1.33%,+1.58%,+1.61%,
    

    您可以尝试将数据追加到列表并在一行中打印

    lst=[i.get_text(strip=True) for i in values]
    print(*lst,sep=",")
    

    输出:

    +1.30%,-1.33%,+1.58%,+1.61%
    

    获取单个变量

    x=",".join(lst)
    print(x)
    

    输出:

    +1.30%,-1.33%,+1.58%,+1.61%
    

    【讨论】:

    • 我的答案已更新,请参考!
    • 非常感谢!完美运行!
    【解决方案2】:

    您可以使用字符串连接来做到这一点。

    from bs4 import BeautifulSoup
    
    HTML = '''
    </tr>
    <td class="up">
    <p class="pie_chart_val">+1.30%</p>
    </td>
    <td class="down">
    <p class="pie_chart_val">-1.33%</p>
    </td>
    <td class="up">
    <p class="pie_chart_val">+1.58%</p>
    </td>
    <td class="up">
    <p class="pie_chart_val">+1.61%</p>
    </td>
    </tr>
    '''
    
    soup = BeautifulSoup(HTML, 'lxml')
    values = soup.find_all('p', class_="pie_chart_val")
    ans = ''
    for value in values:
        ans += value.text.strip() + ' '
    
    print(ans)
    

    ans 是一个字符串,其中包含&lt;p&gt; 标记的空格分隔文本。

    +1.30% -1.33% +1.58% +1.61%
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2021-03-30
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2019-09-29
      相关资源
      最近更新 更多