【问题标题】:Using BeautifulSoup to extract span text使用 BeautifulSoup 提取跨度文本
【发布时间】:2021-10-05 08:00:47
【问题描述】:

我有这个代码:

soup = BeautifulSoup(driver.page_source, 'html.parser')
text_intro = soup.find( 'div', { 'id' : 'gerais' } )
usernam = soup.select('#main > aside > div > div:nth-child(2) > span:nth-child(3) ')

print( '', 'Result_text_intro -> ', texto_intro )
print( '', 'Result_usernam -> ', usernam )

它打印这个:

Result_usernam ->  [<span style="color:#F5B518;font-weight:bold"> (TestUser)</span>]

我怎样才能从跨度中只获取“(TestUser)”?

【问题讨论】:

  • 首先你应该阅读BeautifulSoup 的所有文档 - 你会知道有.get_text().string。但你还必须看到你有[ ... ],所以你有列表,你必须使用for-loop 或usernam[0] 从列表中获取第一个元素。

标签: python macos selenium beautifulsoup terminal


【解决方案1】:

你得到[ ],所以你有列表,你必须使用for-loop 单独处理每个元素或[0] 只获取第一个元素。

然后你可以使用.get_text().string
(在某些教程中您可以看到.text,但在较新版本中首选.string

print('Result_usernam -> ', usernam[0].get_text(strip=True) )

print('Result_usernam -> ', usernam[0].string.strip() )

如果你得到更多元素

for item in usernam:
    print('Result_usernam -> ', item.get_text(strip=True) )

for item in usernam:
    print('Result_usernam -> ', item.string.strip() )

文档:.get_text().string


select() 总是给出列表(即使没有结果或只有一个结果),但也有select_one() 只获得第一个结果,然后你不需要[0]for-loop。

【讨论】:

    【解决方案2】:

    你试过“文字”吗?

    print( '', 'Result_usernam -> ', usernam.text)
    

    【讨论】:

    • 在输出中查看[..] - 它是列表,所以你需要usernam[0].text
    猜你喜欢
    • 2022-06-27
    • 1970-01-01
    • 2019-03-09
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多