Python从<script> html标记内部获取数据值

时间:2018-11-02 00:00:40

标签: javascript python html

因此,如果有人可以帮助我,我需要从html网页中提取一个变量。

这是网页包含的内容

  
 

我几乎只需要从py网页中提取该值。 如果有人可以帮忙会很好,如果这很难理解我很傻,那就对不起。

2 个答案:

答案 0 :(得分:0)

您可以使用urllib和正则表达式搜索来做到这一点。

import urllib.request
import re

url = "https://stackoverflow.com/questions/53111019/python-get-data-value-from-inside-script-html-tag"
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

#print(html)
between_script_tags = re.search('<script>(.*)</script>', html)

print(between_script_tags)

URlLib从页面中提取HTML,然后're.search()'在HTML中找到介于''和''之间的文本

但是,这只会为您带来纯文本。例如。在您的情况下,它将返回字符串“ var id = "5010";”`

您可以进一步拆分:

output = between_script_tags.split(“ ”)

这将使输出列出三项内容:['var','id','=','“ 5010”;']

从这里开始,提取所需数据非常简单。

答案 1 :(得分:0)

我发现使用python string split() function处理此类事情很容易。

编辑:进行重大更新以处理新要求

简单的事情:

html = """
<script>
    var id = \"5010\";
    var id2 = \"8888\";
    var idX = \"XoX\";
</script>"""

varlist = {}
vars  = html.split("var ")[1:]  # get each var entry
for v in vars:
    name = v.split("=")[0].strip()  # first part is the var [name = "]
    value = v.split("\"")[1]        # second part is the value [ = "..."]
    varlist[name] = value           # store it for printing below

print("Varlist - " + str(varlist))

---------------------
OUTPUT: Varlist - {'id': '5010', 'id2': '8888', 'idX': 'XoX'}

split()返回一个字符串列表,该字符串在搜索的部分周围是分开的。第二个参数表示最大分割数。因此,通过分割字符串,将其限制为一个分割,然后使用[0][1]元素,可以将输入分开以获取所需的数据。

在上面,第一个拆分在var上。这样就给出了一个列表,因为字符串在有var的位置都被分割了,所以每个条目的第一部分是var名称(我们从头开始扔掉了垃圾)。

然后,代码将针对每个拆分循环,通过在=上拆分获取[0]端来获取var名称。接下来是var值,该值始终包含在引号中,因此在"上进行拆分应给出3个项目的列表,其中[1]元素是var的值。仅出于示例目的,将它们添加到python字典中。

如果您的值并不总是用引号引起来,则可以将其替换为;,依此类推。可以使用任何类型的保证模式。