我有一个问题,尝试使用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字段的正确方法吗?
答案 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)