我有这个website我想下载该页面的内容。
我尝试了selenium,并用它点击按钮,但没有成功。
#!/usr/bin/env python
from contextlib import closing
from selenium.webdriver import Firefox
import time
# use firefox to get page with javascript generated content
with closing(Firefox()) as browser:
# setting the url
browser.get("http://bonusbagging.co.uk/oddsmatching.php#")
# finding and clicking the button
button = browser.find_element_by_id('select_button')
button.click()
page = browser.page_source
time.sleep(5)
print(page.encode("utf8"))
此代码仅下载源代码,其中数据被隐藏。
有人可以告诉我正确的方法吗?或者告诉我如何下载隐藏的数据?
提前致谢!
最佳答案
我在抓取时总是像瘟疫一样尽量避免使用 Selenium ;它非常慢,而且几乎从来都不是处理事情的最佳方式。在抓取之前你应该更多地挖掘源头;在此页面上很明显,html 正在传入,然后进行单独的调用来获取表的数据。为什么不进行与页面相同的调用?速度快如闪电,无需 html 解析;仅返回原始数据,这似乎就是您正在寻找的内容。 python requests import 非常适合这个。快乐抓取!
import requests
table_data = requests.get('http://bonusbagging.co.uk/odds-server/getdata_slow.php').content
PS:查找这些调用的最佳方法是打开开发控制台,然后查看网络选项卡。您可以在此处查看正在调用的电话。另一种方法是转到“源”选项卡,查找一些 javascript,然后搜索 ajax 调用(这就是我在上面调用的 url 的位置,路径为:top/odds-server.com/odds-server/js/table_slow.js)。后面的选项有时更容易,有时几乎不可能(如果文件被缩小/丑化)。做任何对你有用的事情!
关于javascript - 使用python下载动态加载的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563192/