【问题标题】:How to find value from HTML?如何从 HTML 中找到价值?
【发布时间】:2019-02-07 18:25:09
【问题描述】:

我有这个代码:

<a id="US-7" href="javascript:void(0);" class="chooseSizeLink chooseSizeLinkActive" data-size="10" onclick="ProductDetails.changeSizeAffectedLinks(
                                                           '10780559',
                                                           '170,85 USD',
                                                           '125,32 USD',
                                                           '26',
                                                           '45,53 USDsaved!',
                                                           '10',
                                                           '7',
                                                           '15',
                                                           'true',
                                                           'false',
                                                           'false',
                                                           'false',
                                                           'unknown',
                                                           'US-',
                                                           '555088-401');" btattached="true">10</a>

我想找到这个值:10780559 .可能吗? 我正在尝试在 python 中做到这一点。

【问题讨论】:

  • 您添加了 python 和 beautiful soup 作为标签,因此您知道它们的作用,但您没有包含任何以前的尝试或想法?
  • 不知道怎么做

标签: javascript python beautifulsoup


【解决方案1】:

是的,事实上,您甚至可以将 onclick 属性中的每个值放到一个列表中。首先让我们将其分配给变量html

html="""
<a id="US-7" href="javascript:void(0);" class="chooseSizeLink chooseSizeLinkActive" data-size="10" onclick="ProductDetails.changeSizeAffectedLinks(
                                                           '10780559',
                                                           '170,85 USD',
                                                           '125,32 USD',
                                                           '26',
                                                           '45,53 USDsaved!',
                                                           '10',
                                                           '7',
                                                           '15',
                                                           'true',
                                                           'false',
                                                           'false',
                                                           'false',
                                                           'unknown',
                                                           'US-',
                                                           '555088-401');" btattached="true">10</a>
"""

然后我们要获取a标签的onlclick属性。然后我们可以隔离括号内的字符串,清理它并从中列出。

import re
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'html5lib')
list_string=re.search('\(([^)]+)', soup.find('a')['onclick']).group(1) #get string within paranthesis
list_string_narrow=' '.join(list_string.split()).replace("'","") #clean the string
list_onlcick=list_string_narrow.split(',') #make it a list
print(list_onlcick)
print(int(list_onlcick[0])) 

输出

['10780559', ' 170', '85 USD', ' 125', '32 USD', ' 26', ' 45', '53 USDsaved!', ' 10', ' 7', ' 15', ' true', ' false', ' false', ' false', ' unknown', ' US-', ' 555088-401']
10780559

【讨论】:

    【解决方案2】:

    您可以通过“US-7”id 获取元素。然后getAttribute 来获取onclick 属性。 split 用于将 onclick 属性获取的字符串分隔到括号内的部分。第二次拆分是将字符串数组分开,只得到第一个。可能有一些不必要的空格,所以我也删除了空格和引号。最后将其转换为数字。

    如果你不明白发生了什么,你应该逐个尝试。

    Number(document.getElementById('US-7').getAttribute('onclick').split(/[()]+/)[1].split(',')[0].replace(/\s/g, '').replace(/'/g, ''));
    

    【讨论】:

    • 如果我正确理解了这个问题,OP 要求的是 Python 解决方案而不是 JavaScript 解决方案
    • python 部分最初并不是问题的一部分,我提供了一个 javascript 解决方案,因为他们用 javascript 标记了它。我会保留它,以防它对他们有用。
    猜你喜欢
    • 2021-07-31
    • 2022-06-15
    • 2016-03-30
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多