【问题标题】:Selenium innerHTML list, print specific valueSelenium innerHTML 列表,打印具体值
【发布时间】:2021-06-12 15:41:56
【问题描述】:

首先,我是使用 Python 的新手,尤其是 Selenium。所以我使用 webdriver 连接到一个页面,并且已经获取了我需要的 InnerHTML。这是我的问题,InnerHTML 是一个“列表”,我只想输出一个值。它看起来像这样:

<html>
 <body>
  <pre style="example" xpath="1">
   "amount": 12{
   "value" : 3
    },
  </pre>
 </body>
</html>

^这只是为了说明,因为实际的东西要长得多。 InnerHTML 看起来像这样:

"amount": 12{
   "value" : 3
    },

^这就是我现在的位置。我不能指定一行,因为页面不是静态的。如何让 python 从 InnerHTML 中的变量中找到“值”?请注意“值”后面有一个冒号!

非常感谢您!

【问题讨论】:

    标签: python selenium innerhtml


    【解决方案1】:

    我建议使用正则表达式来查找值。我假设你只需要 number 部分,所以这里是代码:

    innerHTML = '''
    "amount": 12{
       "value" : 3
        },"value":4
        'value': 5
    '''
    
    import re
    regex = re.compile(r'''("|')value("|')\s*:\s*(?P<number>\d+)''')
    startpos = 0
    m = None
    
    while 1:
        m = regex.search(innerHTML, startpos)
        if m is None: break
        print(m.group("number"))
        startpos = m.start() + 1
    
    # output:
    # 3
    # 4
    # 5
    

    这会将找到的所有值数字打印为字符串。例如,您可以在之后将它们转换为整数。
    注意:我的代码还解释了 value 被单引号 ' 而不是双引号 " 包围的情况。这是为了您的方便;如果没有,您可以将上面的相应行更改为:

    regex = re.compile(r'''"value"\s*:\s*(?P<number>\d+)''')
    

    在这种情况下,输出将不包含值5

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多