自动按钮按下Python

时间:2018-05-01 21:37:23

标签: javascript python html beautifulsoup request

我已经尝试了一段时间来弄清楚如何在此页面上自动下载csv: https://razzball.com/mlbpitchingstats/

在顶部,您可以单击基本的html输入框,然后单击该框上的下载。我知道我可以弄清楚如何使用无头驱动程序执行此操作,但我一直在尝试弄清楚如何使用请求或以某种方式访问​​下载按钮侦听器。

监控网络选项卡时,似乎没有api请求。 我唯一的选择是使用无头浏览器吗?反正有没有请求抓住这个?任何帮助都会很大!

1 个答案:

答案 0 :(得分:0)

与您的评论不同,数据通过JS填充。关于此的两条线索:

  1. 如果您查看页面源代码,则表格已在您的浏览器html中填充。
  2. 如果你查看浏览器网络,浏览器就没有XHR请求来获取数据。
  3. 因为@SuperStew声明你可以尝试使用Beautifulsoup,虽然它可能有点麻烦,在每个<tr/>元素上使用for循环。

    如果我需要以可用的格式获取数据,我会使用pandas。请参阅read_html方法的文档。这有额外的好处,它应该有助于将数据转换为您需要的类型,即整数。但正如文档所述,你应该期待一些数据争论。

    修改

    似乎mlbstats阻止通过用户代理过滤,因此您必须使用带有欺骗用户代理的请求来获取页面html:

    import pandas as pd
    import requests
    url = "https://razzball.com/mlbpitchingstats/"
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    response = requests.get(url, headers=headers)
    data = pd.read_html(response.content)  # will need wrangling