Как я могу разобрать таблицу из определенной строки, используя BeautifulSoup? - PullRequest
0 голосов
/ 15 января 2019

извините за нубистский вопрос.

Я учусь использовать BeautifulSoup и пытаюсь извлечь конкретную строку данных из таблицы.

Веб-сайт https://airtmrates.com/ и точная строка, которую я пытаюсь получить:

VES Боливар Соберано Банк Значение Значение Значение

В таблице нет классов, поэтому я не знаю, как найти и проанализировать эту строку.

Я вытаскивал что-то из моих ягодиц, но с треском провалился. Вот последний код, который я попробовал, чтобы вы могли посмеяться:

def airtm():
    #URLs y ejecución de BS
    url = requests.get("https://airtmrates.com/")
    response = requests.get(url)
    html = response.content
    soup_ = soup(url,  'html.parser')
    columns = soup_.findAll('td', text = re.compile('VES'), attrs = {'::before'})
    return columns

1 Ответ

0 голосов
/ 15 января 2019

Страница является динамической, что означает, что вам понадобится отрисовать страницу перед анализом. Вы можете сделать это с помощью Selenium или Requests-HTML

Я не слишком знаком с Requests-HTML, но в прошлом я использовал Selenium. Это должно помочь вам. Кроме того, всякий раз, когда я пытаюсь вытащить тег <table>, мне нравится использовать панды для разбора. Но BeautifulSoup по-прежнему может быть использован, просто требуется немного больше времени для перебора тегов table, tr, td. Панды могут сделать эту работу за вас с .read_html():

from selenium import webdriver
import pandas as pd


def airtm(url):
    #URLs y ejecución de BS
    driver = webdriver.Chrome("C:/chromedriver_win32/chromedriver.exe")
    driver.get(url)

    tables = pd.read_html(driver.page_source)
    df  = tables[0]
    df = df[df['Code'] == 'VES']

    driver.close()
    return df

results = airtm('https://airtmrates.com/')

Выход:

print (results)
    Code              Name         Method    Rate      Buy     Sell
120  VES  Bolivar Soberano           Bank  2526.7  2687.98  2383.68
143  VES  Bolivar Soberano   Mercado Pago  2526.7  2631.98  2429.52
264  VES  Bolivar Soberano      MoneyGram  2526.7  2776.59  2339.54
455  VES  Bolivar Soberano  Western Union  2526.7  2746.41  2383.68
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...