在没有浏览器的情况下,通过Python(jQuery/Ajax)控制网站(html/javascript)



我正在尝试编写一个小型Python脚本,用于从网站(无浏览器(打开/加载内容并更改网站上的值。该网站显然是为通过浏览器进行图形用户输入而编写的,但我现在需要自动更改这些值,无法手动更改这些设置。

下面可以找到相应的HTML和javascript代码的片段示例,这些代码可以更改主页的值。我通过"代码检查器"提取了这些代码,但无法访问这些代码。

该网站通过http:\*在我的网络中本地运行.*:8080,其中是我的IP,8080是端口(都是固定的(。

我认为以下几行是必不可少的,但我不清楚如何用Python重现:

$.ajax(root+'/settings/' + control + '?set='+val).fail(display_error('cannot_set', control));

我研究了几个Python包,如flask、http、request,但我还没有找到一个很好的答案来解决我的问题。

最后,我想要一个Python方法,它有一个类似于以下的简单参数调用:

def change_crop_x(val):
# Here needs to be the python code I'm unsure of
return True # True if value was succesfully changed

任何帮助都将不胜感激。

最佳,Florian

<div class="form-group" id="crop_host">
<label class="col-xs-3 control-label">Crop</label>
<div class="col-xs-4">
<label class="col-xs-2 nopadding" for="range_crop_x">X:</label> <input class="col-xs-10" id="range_crop_x" type="range" min="0" max="100" value="50"/>
</div>
<div class="col-xs-4">
<label class="col-xs-2 nopadding" for="range_crop_y">Y:</label> <input class="col-xs-10" id="range_crop_y" type="range" min="0" max="100" value="50" />
</div>
</div>

更改的内容示例

var crops = ["crop_x", "crop_y"]
var crop_holders = []
for (i in crops) {
var control = crops[i]
crop_holders.push({
val: get_val('#range_'+control),
id: -9999,
upd: function(val) {},
cmd: function(control){ return function(val) {
if (val == 0) {
val = 1;
}
$.ajax(root+'/settings/' + control + '?set='+val).fail(display_error('cannot_set', control));
}} (control)
})
}
if (config.curvals.crop_x != undefined) {
$('#range_crop_x')
.val(config.curvals.crop_x)
.change(scheduleUpdateW(crop_holders[0]));
$('#range_crop_y')
.val(config.curvals.crop_y)
.change(scheduleUpdateW(crop_holders[1]));
} else {
$('#crop_host').hide()
}

查看您提供的元素,我猜您试图更改的值来自应用程序IP网络摄像头。

当您通过移动滑块修改CROP X的值时,会向服务器发送以下HTTP请求:GET HTTP://[YOUR_IP_ADDRESS]:8080/settings/CROP_X?set=[值],其中[值]是0到100之间的整数,表示滑块上的位置。

我对python不是很熟悉,但据我所知,为了达到与之相同的效果,你可以使用名为"请求";(等等(,代码应该是这样的(别忘了用你自己的IP地址替换[YOUR_IP_ADDRESS](:

import requests
def change_crop_x(val):
URL = "http://[YOUR_IP_ADDRESS]:8080/settings/crop_x"
PARAMS = {'set':val}
RESPONSE = requests.get(url = URL, params = PARAMS)
if RESPONSE.status_code == 200:
return True
else:
return False

CROP Y.也可以这样做

对于缩放滑块,相应的请求是GET http://[YOUR_IP_ADDRESS]:8080/ptz?zoom=[VALUE],其中[VALUE]是介于0和100之间的整数。

def change_zoom(val):
URL = "http://[YOUR_IP_ADDRESS]:8080/ptz"
PARAMS = {'zoom':val}
RESPONSE = requests.get(url = URL, params = PARAMS)
if RESPONSE.status_code == 200:
return True
else:
return False

最新更新