[英]How can I parse a table from a specific string using 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
页面是动态的,这意味着您需要在解析之前呈现页面。 您可以使用Selenium或Requests-HTML来实现
我对Requests-HTML不太熟悉,但是我过去曾经使用过Selenium。 这应该可以帮助您。 另外,每当我要提取<table>
标记时,我都喜欢使用pandas进行解析。 但是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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.