很抱歉问了这个新手问题。
我正在学习使用 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
最佳答案
页面是动态的,这意味着您需要在解析之前渲染页面。您可以使用 Selenium 来做到这一点或Requests-HTML
我对Requests-HTML不太熟悉,但我过去使用过Selenium。这应该能让你继续前进。另外,每当我拉 <table>
,标签我喜欢用pandas来解析。但是BeautifulSoup仍然可以使用,只是需要多一点工作来迭代table
, tr
, td
标签。 Pandas 可以通过 .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
关于python - 如何使用 BeautifulSoup 从特定字符串解析表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190178/