Python: найти текст в заголовке таблицы с помощью Beautifulsoup - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь очистить часть веб-страницы: HTML код:

<table class="datatable">
<thead>
<tr>
        <td>Company name</td>
        <td>Country / Territory</td>
        <td>2-letter code</td>
        <td>Accounting code (PAX)</td>
        <td>Airline prefix code</td>
</tr>
</thead>
<tbody>
    <tr>
            <td>Air France</td>
            <td>France</td>
            <td>AF</td>
            <td>057</td>
            <td>057</td>
    </tr>
</tbody>

Мой код:

def AIRLINE(code):
import csv
import requests
from bs4 import BeautifulSoup
import sys
import string
from importlib import reload

reload(sys)

url = 'https://www.iata.org/en/publications/directories/code-search/?airport.search=%s' %(code)

response = requests.get(url)
html = response.content
soup = BeautifulSoup(html, 'html.parser')
soup = soup.find("td", data-heading="Company name").text
print(soup)

Мне нужно Извлеките значение «Air France», но отмените привязку к заголовку «Название компании». В выводе появляется синтаксическая ошибка.

Ошибка: SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

Любые предложения будут высоко оценены.

Ответы [ 2 ]

1 голос
/ 05 марта 2020
import requests
import pandas as pd

r = requests.get(
    "https://www.iata.org/en/publications/directories/code-search/?airport.search=%s")

df = pd.read_html(r.text)[0]

names = df['Company name']

print(names.values.tolist())

Выход:

['21 Air LLC', '40-Mile Air, Ltd.', '8165343 Canada Inc. dba Air Canada Rouge', '9 Air Co Ltd', '9736140 Canada Inc. t/a Pascan']
1 голос
/ 05 марта 2020

Проблема заключается в следующем:

soup = soup.find("td", data-heading="Company name").text

Ключ data-heading не является параметром метода find(), это класс HTML, который вы хотите фильтровать. Для этого вам необходимо передать dict в качестве параметра методу attrs из soup.find().

Попробуйте:

text = soup.find("td", attrs={"data-heading": "Company name"}).text
print(text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...