我正在创建一个Greasemonkey脚本,我在这里编写六个变量(时间,移动,滚动,sav,prin,book和url)。
我需要发送这些变量'数据到我的PHP页面,以便可以使用WAMP服务器将这些数据插入到MySQL表中。
请问,任何人都可以提供准确的代码,因为我对这一切都不熟悉吗?
我的Greasemonkey脚本是:
{var ajaxDataObj = {
s: sav,
p: prin,
b: book,
t: finalTime,
u: url,
a: totalScroll,
b: tot
};
var serializedData = JSON.stringify (ajaxDataObj);
GM_xmlhttpRequest ( {
method: "POST",
url: "localhost/anuja/greasemonkey.php",
data: serializedData,
headers: {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used.
"Accept": "text/xml" // If not specified, browser defaults will be used.
} }
和php方面是:
$jsonData = json_decode($HTTP_RAW_POST_DATA);
echo jsonData.u;
这段代码没有运行..另外,我尝试检查我的变量u
是否已使用jsonData.u
传递,但它只是回应" jsonData.u"。
答案 0 :(得分:0)
我只是创建了用户脚本,使Greasemonkey从打开的网页中抓取数据,并将POST参数发送到我本地XAMPP服务器上托管的PHP脚本,该脚本可以运行本地Python脚本来自动化工作。
这也是一种很酷的方法,用于从Javascript渲染页面中搜索数据,这对于Python刮刀来说很难,甚至比Selenium更好:P
这个参数由这个PHP示例网址中的&
分隔:
http://www.sciencedirect.com/search?qs=Vascular%20stent&authors=&pub=&volume=&issue=&page=&origin=home&zone=qSearch&offset=1200
GM脚本部分:
// @grant GM_xmlhttpRequest
unsafeWindow.sendPhp2Py = function(){
//var ytitle = 'Youtube - ' + document.querySelector('div.yt-user-info').textContent.trim();
var yurl = document.location.href;
//console.info(ytitle);
//console.info(yurl);
var ret = GM_xmlhttpRequest({
method: "POST",
url: "http://localhost/php_run_py.php",
//data: "ytitle="+ ytitle + "&yurl="+ yurl,
data: "yurl="+ yurl,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
console.log(response);
// readyState 4 = complete
// status = 200 OK
if(response.readyState == 4 && response.status == 200){
document.querySelector('#myPhpPyBtn').textContent = 'Sent to PHP!';
}
},
onerror: function(e){
console.log(e);
document.querySelector('#myPhpPyBtn').textContent = 'PHP not connected';
}
});
};
PHP scipt:
<?php
echo $_POST['yurl'];
//传递多个参数如下可以行得通 参数里包含空格哦也可以!!赞 Multiple parameters pass
//echo shell_exec("python test.py \"".$_POST['ytitle']."\" \"".$_POST['yurl']."\"");
//echo shell_exec("python GreaseMonkey_Php_Youtube_srt_generator.py ".$_POST['yurl']);
//更安全 Safer
//system(escapeshellcmd("python test.py \"".$_POST['ytitle']."\" \"".$_POST['yurl']."\""));
system(escapeshellcmd("python GreaseMonkey_Php_Youtube_srt_generator.py ".$_POST['yurl']));
?>
Python测试脚本:
#coding=utf-8
import sys
f = open("test.txt", "a+")
f.write(sys.argv[1] + "\n" + sys.argv[2]+ "\n")
f.close()
print ("some output")
希望它可以提供帮助!