Поиск названий и кодов всех аэропортов - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь очистить данные, чтобы получить нужный мне текст. Я хочу найти строку с надписью aberdeen и все строки после нее, содержащие информацию об аэропорте. Вот пи c иерархии html:

image

I am trying to locate the text elements inside the class "i1" with this code:

import requests
from bs4 import BeautifulSoup

page = requests.get('http://www.airportcodes.org/')
soup = BeautifulSoup(page.text, 'html.parser')
table = soup.find('div',attrs={"class":"i1"})
print(table.text)

But I am not getting the values I expect at all. Здесь - ссылка на данные, если интересно. Очевидно, я новичок в соскабливании.

Ответы [ 3 ]

3 голосов
/ 21 июня 2020

Проблема в вашем парсере BeautifulSoup:

import requests
from bs4 import BeautifulSoup

page = requests.get('http://www.airportcodes.org/')
soup = BeautifulSoup(page.text, 'lxml')
table = soup.find('div',attrs={"class":"i1"})
print(table.text)
1 голос
/ 21 июня 2020

почему люди предлагают селен? это не загружает данные динамически ... запросы + re - это все, что вам нужно, вам даже не нужен красивый суп

 data = requests.get('http://www.airportcodes.org/').content
 cities_and_codes =re.findall("([A-Za-z, ]+)\(([A-Z]{3})\)",data)

просто найдите любые буквенно-цифровые c символы (включая также запятую и пробел), за которыми следует ровно 3 заглавные буквы в скобках

0 голосов
/ 21 июня 2020

Если вам нужны текстовые элементы, вы можете использовать:

soup.get_text()

Примечание: это даст вам все текстовые элементы.

...