Как извлечь текст из тега снаружи с помощью BS4 - PullRequest
2 голосов
/ 25 апреля 2019

Я пытаюсь отсканировать кучу страниц Википедии на предмет статистики о Второй мировой войне.

Я использую 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

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете выделить ячейку 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...