繁体   English   中英

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

[英]Python get data value from inside <script> html tag

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

这是网页包含的内容

<script>
    var id = "5010"; 
</script>

我几乎只需要从py网页中提取该值。 如果有人可以帮助将是很好,如果这很难理解,我很抱歉。

您可以使用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”;']

在这里,提取所需的数据非常简单。

我发现使用python 字符串split()函数来处理这种事情很容易。

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

很简单的东西:

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名称(我们从一开始就丢弃了垃圾)。

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

如果您的值不总是用引号引起来,则可以在;上将其分开; 等等。可以使用任何类型的保证模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM