【问题标题】:Beautifulsoup Parsing- detail infoBeautifulsoup Parsing- 详细信息
【发布时间】:2026-02-05 08:35:01
【问题描述】:

我已经问了一个问题,但似乎我的解释不清楚.. 所以,我再次询问更多详细信息。

<h2 class="sectionTitle">
CORPORATE HEADQUARTERS  </h2>
277 Park Avenue<br />
New York, New York 10172
<br /><br />United States<br /><br />

我想只提取纽约,没有邮政编码 10172 的纽约

这是另一个问题..

<h2 class="sectionTitle">
BACKGROUND</h2>
He graduated Blabala 
</span>

我只想提取他毕业的 Blabla

我已经度过了几天,所以我觉得我可能会变得疯狂.. 请帮助我.. 提前感谢您的帮助。

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    你仍然需要更多的细节来编写一个好的正则表达式。

    例如,如果要在没有始终存在的邮政编码的情况下提取“CORPORATE HEADQUARTERS”的第二行,可以这样写:

    >>> import re
    >>> html = '''
    ... <h2 class="sectionTitle">
    ... CORPORATE HEADQUARTERS  </h2>
    ... 277 Park Avenue<br />
    ... New York, New York 10172
    ... <br /><br />United States<br /><br />
    ... 
    ... <h2 class="sectionTitle">
    ... BACKGROUND</h2>
    ... He graduated Blabala
    ... </span>
    ... '''
    >>> re.search('(?s)<h2 class="sectionTitle">\s*CORPORATE HEADQUARTERS\s*</h2>.*?<br />([^<>]+) \d+', html).group(1).strip()
    'New York, New York'
    >>> re.search('(?s)<h2 class="sectionTitle">\s*BACKGROUND\s*</h2>([^<>]+)', html).group(1).strip()
    'He graduated Blabala'
    

    【讨论】:

    • 使用正则表达式解析html?听起来是个好主意!
    • 正则表达式更快,更宽容。但是你需要非常非常小心。它只适用于特定网站。
    • 非常感谢!但我不知道为什么.. 它不起作用,它代表“NoneType”对象没有属性“组”
    • re.search 如果正则表达式找不到匹配项,则返回 None。您需要在实际代码中处理此问题。
    • 嗯,我只是照你写的复制粘贴了.. ohhh
    【解决方案2】:

    您应该使用tag.contents.split('\n') to split on lines and.rsplit(' ', 1)` 的组合来仅拆分最右边的以空格分隔的字符串。

    【讨论】:

      最近更新 更多