javascript - 使用python下载动态加载的网页

标签 javascript jquery python html selenium

我有这个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/

相关文章:

javascript - 测试后关闭服务器和数据库连接

javascript - Php/JQuery/Javascript - 选择父子依赖

jquery ajax 单击时调用,仅有效一次

python - 同时运行多个相互通信的 Kivy 应用程序

python - web2py - 我的应用程序没有登录

javascript - 异步函数作为 setInterval Nodejs 的参数

javascript - 使用外部 javascript 文件触发 HTML 类

javascript - 永不停止 gif 预加载器

python - tensorflow 中两个点云之间的倒角距离

javascript - 子类化并扩展 Jest 模拟的 Promise