因此,如果有人可以帮助我,我需要从html网页中提取一个变量。
这是网页包含的内容
我几乎只需要从py网页中提取该值。 如果有人可以帮忙会很好,如果这很难理解我很傻,那就对不起。
答案 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字典中。
如果您的值并不总是用引号引起来,则可以将其替换为;
,依此类推。可以使用任何类型的保证模式。