html中按键值,从HTML中的script元素内部提取对象键的值

alecxe..

5

这总体上是一个有趣的问题 - 从HTML代码中的JavaScript代码中提取内容.

基本上,这意味着您首先需要进行HTML解析 - 找到所需的script元素并获取其文本.然后,第二步是从realty对象内部提取所需的数字.

如果您要使用正则表达式方法,您实际上可以重复使用正则表达式来定位所需script元素并提取所需变量(BeautifulSoup 允许应用正则表达式模式来查找/过滤元素):

import re

from bs4 import BeautifulSoup

html = """

window.realty = {"user_id":4243456};

"""

pattern = re.compile(r'\{"user_id"\s*:\s*(\d+)\}')

soup = BeautifulSoup(html, "html.parser")

script = soup.find("script", text=pattern)

print(pattern.search(script.text).group(1))

# prints 4243456

我们\{"user_id"\s*:\s*(\d+)\}在这里分解:

反斜杠用于转义在正则表达式语法中具有特殊含义的字符

\s*意味着 - 零个或多个空格字符(把它放在那里以防你:在对象定义中有额外的空格)

\d+ 表示"一个或多个数字"

括号定义一个捕获组 - 这是我们将字符串的特定部分提取到一个组中的一种方式,然后我们通过该组访问.group(1)

请注意,\d+@ Evyatar建议的简单表达式过于宽泛,您可能很容易得到误报.

以下是一些类似的主题,其中包含一些其他选项:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值