Python Selenium driver.get达到了最大参数?

时间:2015-05-11 09:19:13

标签: python json selenium

我有一个问题,尝试使用selenium在driver.get中提取JSON数据。正如您在下面看到的,我得到的错误是我不能使用此方法使用2个以上的agruments。

for d in data["screen"]:
    display = Display(visible=1, size=(800, 600))
    display.start()
    driver = webdriver.Chrome()
    driver.get("https://",d["server"],"/test",sep='')

TypeError: get() takes exactly 2 arguments (4 given)

这让我觉得这不是将varibale数据输入driver.get字段的正确方法吗?

2 个答案:

答案 0 :(得分:0)

以这种方式获取JSON数据不是最理想的。它将与您使用浏览器执行完全相同的操作。 Selenium 获取数据,但它将显示为浏览器页面,您仍然必须从浏览器中获取以对其执行任何操作。我会使用requests来获取数据,而不是通过Selenium。

无论如何,如果你要做的是建立一个URL,那么Selenium就不会为你做 。您必须在致电driver.get之前执行此操作:

driver.get("https://" + d["server"] + "/test")

我不确定sep=''是什么意思。我将其解释为在您之前的参数之间指定了一个分隔符。如果是这样,则不需要它。否则,你必须澄清。

答案 1 :(得分:0)

您最有可能只创建一次显示和驱动程序,然后仅在循环中创建get

display = Display(visible=1, size=(800, 600))
display.start()
driver = webdriver.Chrome()
for d in data["screen"]:
    driver.get("https://",d["server"],"/test",sep='')
    print(driver.page_source)

我假设你来自R sep='';在Python中,您可以与+连接,即:

driver.get("https://" + d["server"] + "/test")

正如@Louis建议的那样,如果您的数据未通过javascript加载(并且页面不需要启用javascript),您也可以使用请求模块:

import requests
for d in data["screen"]:
    response = requests.get("https://" + d["server"] + "/test")
    print(response.content)