用动态形式的请求替换 Selenium

我想抓取 [this][1] 页面动态表单,我现在正在使用 Selenium 并获得一些结果。

我的问题:

  1. 可以用一些 POST 请求替换 Selenium + WebDriver 代码吗?(我之前使用过 Requests,但只有当 API 可用时......我不知道如何对这种形式进行逆向编码)

  2. 有没有更好的方法来清理结果页面以仅获取表格?(在我的例子中,结果“数据”变量是一团糟,但无论如何我已经获得了最后一个值,这是脚本的主要目的)

  3. 有什么建议吗?

我的代码:

from selenium import webdriver

import pandas as pd


from bs4 import BeautifulSoup


def get_tables(htmldoc):

    soup = BeautifulSoup(htmldoc)

    return soup.findAll('table')


driver = webdriver.Chrome()

driver.get("http://dgasatel.mop.cl/visita_new.asp")

estacion1 = driver.find_element_by_name("estacion1")

estacion1.send_keys("08370007-6")

driver.find_element_by_xpath("//input[@name='chk_estacion1a' and @value='08370007-6_29']").click()

driver.find_element_by_xpath("//input[@name='period' and @value='1d']").click()

driver.find_element_by_xpath("//input[@name='tiporep' and @value='I']").click()

driver.find_element_by_name("button22").click()


data = pd.read_html(driver.page_source)


print(data[4].tail(1).iloc[0][2])

提前致谢。[1]:http : //dgasatel.mop.cl/visita_new.asp


繁星coding
浏览 166回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python