如何使用BS4从标签外部提取文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用BS4从标签外部提取文本相关的知识,希望对你有一定的参考价值。

我正在尝试扫描一堆维基百科页面,以获取有关二战的统计数据。

我正在使用BeautifulSoup尝试从维基百科页面右侧的列中获取所有统计信息。代码如下所示。 “links.csv”是一个带有一堆链接结尾的文件,例如“Battle_of_Leyte_Gulf”。我已经测试了<h2>标签,它正确访问所有网站。

import requests
from bs4 import BeautifulSoup
import pandas
df=pandas.read_csv("links.csv")
links=df['links']
for url in links:
  # print("\n"+url+"\n")
  txt="https://en.wikipedia.org/wiki/"+url
  page=requests.get(txt)
  soup=BeautifulSoup(page.content, 'html.parser')
  tags = soup.find_all("br")
  for tag in tags:
    print(tag)

但是,我注意到文字不在实际中 标签,它实际上就像列出的那样。

"Sixth Army: "
<br>
"≈200,000"
<br>
<span class="flagicon">...</span>
"Air and naval forces: ≈120,000"

我想知道如何获得实际文本“第六军:”和“≈200,000”。

链接到这里:https://en.wikipedia.org/wiki/Battle_of_Leyte

答案

您可以隔离td单元格,然后使用next_sibling

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://en.wikipedia.org/wiki/Battle_of_Leyte')
soup = bs(r.content, 'lxml')
visible_row = soup.select_one('.vevent tr:nth-of-type(12) td span')
print(visible_row.next_sibling)
print(visible_row.next_sibling.next_sibling.next_sibling)

以上是关于如何使用BS4从标签外部提取文本的主要内容,如果未能解决你的问题,请参考以下文章

pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库

从 bs4.element.tag 中提取标签返回空字符串

如何在文本文件中将输出复制到 bs4 中的终端

bs4爬虫的一点心得----坑

如何从 BeautifulSoup 对象中提取 JSON?

如何使用标签提取标签内的文本?