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

时间:2019-01-14 22:33:14

标签: python html beautifulsoup

很抱歉提出这个笨拙的问题。

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

该网站是https://airtmrates.com/,我想要获取的确切字符串是:

  

VES Bolivar Soberano银行价值价值价值

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

我一直在提拔一些东西,但是我失败了。这是我尝试的最后一个代码,因此您可以大笑:

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 :(得分:0)

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

我对Requests-HTML不太熟悉,但是我过去曾经使用过Selenium。这应该可以帮助您。另外,每当我要提取public function actionGet_event() { $events = Shedule::find()->all(); $eventsJson = array(); foreach ($events as $event) { $url = "https://www.google.co.in/"; $eventsJson[] = array( 'description' => $event->event_desc, 'title' => $event->event_title, 'start' => $event->event_date, 'edit' => $url, 'className' => ["event", "bg-color-greenLight"], 'icon' => 'fa-check', ); } echo json_encode($eventsJson); } 时,我都喜欢用熊猫来解析标签。但是BeautifulSoup仍然可以使用,只需花费更多的工作来遍历<table>tabletr标签。熊猫可以通过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/')