【问题标题】:How to extract value of javascript variable using python lxml如何使用python lxml提取javascript变量的值
【发布时间】:2014-01-03 18:40:45
【问题描述】:

我正在尝试在 html 页面中获取 javascript 变量的值。我已经弄清楚如何获取所有脚本标签的文本,但似乎无法弄清楚如何获取脚本标签中特定变量的文本。有谁知道如何获取 javascript 变量的文本?

以下是我尝试解析的示例。我正在尝试获取“var d”的值

<div id="box" style="position:absolute;z-index:6;left:px;top:450px;"></div> 
    <script language="javascript"> 
    function showTooltip(element, town_name, p, points, a, town_type){
        var t = $('tt');
        t.style.top = (-75 + element.offsetTop) +  'px';
        t.style.left = (25 + element.offsetLeft) + 'px';
        t.style.backgroundImage="url('images/odd.png')";
        t.innerHTML = '<font color=#AD4100>' + unescape(town_name) + '<br/>' + unescape(p) + '<br/>' + points + '<br/>' + unescape(a) + '<br/>' + unescape(town_type) + '</font>';
        t.show();
    }
    function hideTooltip(){
        $('tt').hide();
    }
var d = [[1490.77265625,1373.4140625,30983,'TownID: 30983','GREY','circle_grey.png',1248,'planet x\'s city 5','','N/A'],[1186.45390625,1538.265625,33009,'TownID: 33009','GREY','circle_grey.png',1150,'wendyshome','','N/A'],[1234.496875,856.18203125,31646,'TownID: 31646','GREY','circle_grey.png',1312,'...','','N/A'],[1041.30078125,812.55859375,35358,'TownID: 35358','GREY','circle_grey.png',1207,'Waterville','','N/A'],

以下是我获取所有脚本标签文本的sn-p代码。

for element in page.iter('script'):
    scriptText = element.text_content()
print(scriptText)

【问题讨论】:

    标签: javascript python parsing lxml


    【解决方案1】:

    提取后,您必须在 scriptText 上使用字符串处理。 lxml 不能再帮你了。

    如果var d 是脚本中的最后一个条目,您可以使用:

    var_d_source = scriptText.split('var d =', 1)[-1].rsplit(';', 1)[0].strip()
    

    这应该会为您提供 var d = 之后直到最后一个分号的所有内容。

    然后,您可以使用 json 模块将该值转换为 Python:

    var_d_value = json.loads(var_d_value)
    

    【讨论】:

    • 不幸的是,这不是最后一个变量,我会尝试使用您发布的内容。谢谢你的帖子,我很感激。
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 2011-12-07
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多