我正在编写python脚本来获取我所居住的城市公立学校的统计数据。使用以下代码,我得到一个页面的源代码,按页面显示总共247所学校的前100个结果:
import requests
url = "http://www.madrid.org/wpad_pub/run/j/BusquedaAvanzada.icm"
post_call = {'Public title': 'S', 'cdMuni': '079', 'cdNivelEdu': '6545'}
r = requests.post(url, data = post_call)
可以查看该页面here。
在该页面上有一个按钮,可以激活一个javascript函数来下载包含所有247个结果的csv文件。我正在考虑使用Selenium来下载这个文件,但是我已经看到,使用Tamper Data,当按下按钮时会发生POST调用,其中参数codCentrosExp
与247所大学的代码一起发送。参数如下所示:
CodCentrosExp = 28077877%3B28077865%3B28063751%3B28018392%3B28018393%...(thus up to the 247 codes)
这使我的工作更轻松,因为我不必下载csv文件,打开它,选择代码列等。我可以使用Tamper Data来做,但我的问题是:我怎样才能获得该参数用我的Python脚本,而不必使用篡改数据?
我终于在页面的源代码中找到了参数,并按如下方式提取它们:
schools = BeautifulSoup(r.content, "lxml")
school_codes = schools.findAll(Attrs = {"name": "codCentrosExp", "value": re.compile("^.+$")})[0]["value"]
school_codes = school_codes.split(";")
无论如何,如果有人知道如何回答原来的问题,我将很高兴知道如何做到这一点。