如何使用 美丽汤 获取反应文本包装器中的文本?



这是来自雅虎金融的HTML代码

<p class="class="D(ib) W(47.727%) Pend(40px)">
<!-- react-text: 561 -->
"1601 Willow Road"
<!-- /react-text -->
<br>
<!-- react-text: 563 -->
"Menlo Park, CA 94025"
<!-- /react-text -->
<br>
<!-- react-text: 565 -->
"United States"
<!-- /react-text -->
<br>
<a href="tel:6505434800" class="C($linkColor)">650 543 4800</a>
<br>
<a href="https://investor.fb.com" rel="noopener noreferrer" target="_blank"
class="C($linkColor)" title="">https://investor.fb.com</a>
</p>

我想单独获取信息字符串,但我的代码现在返回所有内容都在一行中。这就是我现在所拥有的,以及它所返回的:

soup.find('p', {'class':'D(ib) W(47.727%) Pend(40px)'}).text

返回

'1601 Willow RoadMenlo Park, CA 94025United States650 543 4800https://investor.fb.com'

此外,以下是链接:https://ca.finance.yahoo.com/quote/FB/profile?p=FB

要将字符串分离,请使用stripped_strings:

list(soup.find('p', {'class':'D(ib) W(47.727%) Pend(40px)'}).stripped_strings)

或选择更具体的:

list(soup.select_one('[data-reactid="7"] p').stripped_strings)

这将为您提供一个与html中相同顺序的列表,您可以通过索引选择元素:

['1601 Willow Road',
'Menlo Park, CA 94025',
'United States',
'650 543 4800',
'https://investor.fb.com']

替代方案是.get_text('|').split('|'),这将导致相同的结果。

最新更新