我正在尝试扫描一堆Wikipedia页面以获取有关第二次世界大战的统计信息。
我正在使用BeautifulSoup尝试从Wikipedia页面右侧的列中获取所有统计信息。
该代码在下面列出。
“ 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”。
答案 0 :(得分:0)
您可以隔离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)