Создание al oop с BeautifulSoup и занесение результатов в список - PullRequest
1 голос
/ 14 июля 2020

У меня есть следующий код, который я пытаюсь получить все в столбце GE C и поместить его в список. В приведенном ниже коде можно захватить первый, который называется «AF», и я могу продолжать добавлять find_next('tr'), чтобы захватить следующие, но мне сложно понять, как создать al oop в этом сценарии с красивым супом.

import json
from bs4 import BeautifulSoup
import html
from urllib.request import urlopen
from functools import reduce
import pandas as pd

url = 'https://www.cia.gov/library/publications/the-world-factbook/appendix/appendix-d.html'
page = urlopen(url)
soup = BeautifulSoup(page,'html.parser')

soup.find('tr', {'class', 'appendix-entry ln-a'}).find_next('td').find_next('td').get_text(strip = True)

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Мой способ сделать это:

import json
from bs4 import BeautifulSoup
import html
from urllib.request import urlopen
from functools import reduce
import pandas as pd

url = 'https://www.cia.gov/library/publications/the-world-factbook/appendix/appendix-d.html'
page = urlopen(url)
soup = BeautifulSoup(page,'html.parser')

tr = soup.select('tr.appendix-entry')
for data in tr:
    print(data.select('td')[1].get_text(strip=True))
1 голос
/ 14 июля 2020

Этот сценарий напечатает столбец GE C:

import requests
from bs4 import BeautifulSoup


url = 'https://www.cia.gov/library/publications/the-world-factbook/appendix/appendix-d.html'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for gec in soup.table.select('td:nth-child(2)'):
    print(gec.text)

Печать:

AF
AX
AL
AG
AQ
AN
AO
AV
AY

...and so on.
...