【问题标题】:Parse JSON from html tag using Python使用 Python 从 html 标签解析 JSON
【发布时间】:2014-07-16 19:12:30
【问题描述】:

我使用 BeautifulSoup 从 HTML 页面获取以下 sn-p。我无法仅剥离 JSON(在 FB_DATA 之后)。我猜我需要使用 re.search,但我在使用 REGEX 时遇到了问题。

sn-p 是:

<script type="text/javascript">
    var FB_DATA = {
        "foo": bar,
        "two": {
          "foo": bar,
        }};
    var FB_PUSH = []; 
    var FB_PULL = []; 
</script>

【问题讨论】:

  • 到目前为止你有什么正则表达式?
  • 老实说,我什至不知道从哪里开始。我讨厌发布这么少的内容,但我只是在学习,我对正则表达式并不擅长。

标签: python regex json python-2.7


【解决方案1】:

我假设您的主要问题是在 . 匹配除新行之外的任何内容时使用 .*?。使用s dot-matches-newline 修饰符,您可以非常简单地完成此操作:

(?s)    (?# dot-match-all modifier)
var     (?# match var literally)
\s+     (?# match 1+ whitespace)
FB_DATA (?# match FB_DATA literally)
\s*     (?# match 0+ whitespace)
=       (?# match = literally)
\s*     (?# match 0+ whitespace)
(       (?# start capture group)
 \{     (?# match { literally)
 .*?    (?# lazily match 0+ characters)
 \}     (?# match } literally)
)       (?# end capture group)
;       (?# match ; literally)

Demo


您的 JSON 字符串将在捕获组 #1 中。

m = re.search(r"(?s)var\s+FB_DATA\s*=\s*(\{.*?\});", html)
print m.group(1)

【讨论】:

  • 是的,很高兴它有帮助:)
【解决方案2】:

开始
FB_DATA = (\{[^;]*;)

看看在哪些情况下还不够。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2023-03-20
    • 2012-02-24
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多