如何使用BeautifulSoup从特定字符串解析表?

2024-09-28 20:50:18 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我问了个没用的问题

我正在学习使用BeautifulSoup,并尝试在表中提取特定的数据字符串

网站是https://airtmrates.com/,我想得到的确切字符串是:

VES Bolivar Soberano Bank Value Value Value

表没有任何类,因此我不知道如何查找和解析该字符串

我一直在从屁股里掏东西,但我失败得很惨。这是我最后一次尝试的代码,你可以笑一下:

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

Tags: columns数据字符串httpscomurlgetvalue
1条回答
网友
1楼 · 发布于 2024-09-28 20:50:18

页面是动态的,这意味着您需要在解析之前呈现页面。你可以用SeleniumRequests-HTML来做

我不太熟悉HTML请求,但我过去使用过Selenium。这会让你走的。而且,每当我想拉一个<table>标签时,我喜欢用pandas来解析。但是BeautifulSoup仍然可以使用,只是需要更多的工作来遍历tabletrtd标记。熊猫可以通过.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

相关问题 更多 >