我正在编写一个python应用程序,它从我制作的网络应用程序中删除传感器数据。我想使用lxml从HTML中收集某些span元素,这些元素会定期使用JQuery脚本进行更新。似乎lxml没有获取使用JQuery更新的文本,因为我只检索加载原始HTML的空字符串。查看网页时会反映JQuery中的值,但不会反映在Web抓取工具上。如何一致地检索使用JQuery更新的数据?
HTML
<!--Blower Speed Well -->
<div class = "col-xs-4">
<div class = "well" id="bspeed_well">
<span class = "tex" id="bspeed_text">Blower Speed: </span>
<span class = "val" id="bspeed_data"></span>
</div>
</div>
更新HTML元素的JQuery
//Gather Data from main.xml and store into variables
$.ajax({
type: "GET",
url: "static/main.xml",
//dataType: "xml",
async: false,
cache: false,
success: function(xml){
$(xml).find('item').each(function(){
var id = $(this).find('id').text();
switch(id){
case "blower_speed":
bspeed = $(this).find('value').text();
break;
}
});
$("#bspeed_data").text(bspeed);
Python lxml查询
page = requests.get('http://192.168.1.72:5000')
tree = html.fromstring(page.content)
blower_speed = tree.xpath('//span[@id="bspeed_data"]/text()')
print "Blower Speed: ", blower_speed
结果
鼓风机速度:[]
答案 0 :(得分:1)
JQuery发出一个ajax请求来从XML文档中获取值。
您需要使用requests
模拟该AJAX请求。您可以手动执行此操作,也可以将请求复制为cURL(来自浏览器开发人员工具 - >网络标签),并使用此cURL-to-requests conversion utility自动生成请求代码。
然后,您可以使用lxml.etree
来解析XML响应并提取bspeed
值。