如何抓取加载JQuery的特定HTML span元素

时间:2016-07-06 15:40:37

标签: jquery python html lxml

我正在编写一个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

结果

  

鼓风机速度:[]

1 个答案:

答案 0 :(得分:1)

  

JQuery发出一个ajax请求来从XML文档中获取值。

您需要使用requests 模拟该AJAX请求。您可以手动执行此操作,也可以将请求复制为cURL(来自浏览器开发人员工具 - >网络标签),并使用此cURL-to-requests conversion utility自动生成请求代码。

然后,您可以使用lxml.etree来解析XML响应并提取bspeed值。