为了账号安全,请及时绑定邮箱和手机立即绑定

在python中使用selenium从动态网站获取数据:如何发现数据库查询的完成方式?

在python中使用selenium从动态网站获取数据:如何发现数据库查询的完成方式?

慕雪6442864 2021-06-14 12:38:09
我之前有一些编码经验,但不是专门针对 Web 应用程序的。我的任务是从这个网站获取数据:http : //www.b3.com.br/pt_br/market-data-e-indices/servicos-de-dados/market-data/consultas/mercado-de-derivativos /precos-referenciais/taxas-referenciais-bm-fbovespa/它们每天都可用。我在 Python 中使用了 selenium,到目前为止结果很好:我可以获取整个表,将其存储在 Pandas 数据帧中,然后存储到 mysql 数据库和其他东西。问题是:网站的结果总是一样的!这是我的代码:from selenium import webdriverfrom bs4 import BeautifulSoup as bsimport timedef GetDataFromWeb(day, month, year):options = webdriver.ChromeOptions()options.add_argument('headless')options.add_argument('window-size=1920x1080')#had to use these two below because of webdriver crashing issuesoptions.add_argument('no-sandbox')options.add_argument('disable-dev-shm-usage')driver = webdriver.Chrome(chrome_options=options)driver.get("http://www.b3.com.br/pt_br/market-data-e-indices/servicos-de-dados/market-data/consultas/mercado-de-derivativos/precos-referenciais/taxas-referenciais-bm-fbovespa/")#the table is on an iframeiframe = driver.find_element_by_id("bvmf_iframe")driver.switch_to.default_content()driver.switch_to.frame(iframe)#getting to the place where I should input the datadate = driver.find_element_by_id("Data")date.send_keys("/".join((str(day),str(month),str(year))))date = driver.find_element_by_tag_name("button").click()#I have put this wait just to be sure it doesn't try to get info from an unloaded pagetime.sleep(5)page = bs(driver.page_source,"html.parser")table = page.find(id='tb_principal1')headers = ['Dias Corridos', '252','360']matrix = []for rows in table.select('tr')[2:]:    values = []    for columns in rows.select('td'):        values.append(columns.text.replace(',','.'))    matrix.append(values)df = pd.DataFrame(data=matrix, columns=headers)driver.close()#only the first 2 columns are interesting for my purposesreturn df.iloc[:,0:2]无论我向它发送什么输入,这个函数产生的表总是相同的。它们似乎来自 06/09/2018(月 = 09,日 = 06)的相应日期。我认为主要问题是我不知道对他们数据库的查询是如何完成的,所以这总是像“默认日期”一样运行。我读过一些人谈论 Ajax 和 JavaScript 请求,但我不知道是不是这样。我怎么知道?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 317 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信