【问题标题】:Extract string containing comma-separated tags from page with regex/python3/bs4使用 regex/python3/bs4 从页面中提取包含逗号分隔标签的字符串
【发布时间】:2018-10-03 08:22:01
【问题描述】:

我正在用 BeautifulSoup4 解析一个网站,并尝试在一个看起来像 tag1, tag2, tag with space, tag-with-hypen, tag3 的页面上显示一个 div 中的标签列表。有足够广泛的标签变化,我无法直接定位它们。尽管我尽了最大努力,但我还是无法创建适合我需要的正则表达式。

我尝试过的一些表达方式:

r'((\w[ -]?)+(, )?){14,}'
r'(\w+):([^:]+)(?:,|$)'    # https://stackoverflow.com/a/35495165/3722806

我在这里错过了什么?

编辑:澄清一下,我不是在处理像<b> 这样的HTML 标签。我在处理“科幻”、“非小说”意义上的标签”等。

【问题讨论】:

  • ...用空格标记...。您确定 HTML 标记可能包含空格吗?在这种情况下,浏览器如何知道它是标签的第二部分,而不是属性?分享源代码示例和当前/期望的输出
  • 这不太可能是@Andersson 提到的标签。 ,请不要使用正则表达式解析 HTML。但如果你这样做,你就活在罪恶的状态中,无论发生在你身上的事都是应得的。人们已经对此提出警告。只解析属性就可以了。与我们分享一个 HTML 示例。
  • 我没有用正则表达式解析 HTML 本身,我正在尝试从页面的(由 div 类知道的)部分提取文本。所以有一个div.info,其中包含例如描述段落、作者信息和一系列标签(即“非小说”、“科幻”等)。然而,所有这些文本都在一个“块”中,可以这么说,所以我试图提取 just 标签列表。
  • 请用您尝试从中提取“标签”的div 更新您的问题。
  • 至少给我们一张内容“标签”的截图

标签: python regex beautifulsoup


【解决方案1】:

结果比我想象的要简单。

\S.*, .*

忽略空格,查找以逗号分隔的任何内容,加上最后一项。

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多