首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用regex从html youtube页面中获取匹配组之间的文本

如何使用regex从html youtube页面中获取匹配组之间的文本
EN

Stack Overflow用户
提问于 2017-06-05 04:01:26
回答 1查看 187关注 0票数 0

我用尖叫的青蛙刮youtube视频关键词。我知道这个软件会显示一个选项卡,准确地捕捉到这个元信息,但它只显示了160个字符,所以具有更大数量关键字的视频不会在其中显示。

无论如何,我也尝试通过软件上的自定义提取特性使用CSS选择器和Xpath,但是没有得到任何东西。

我最后能想到的是使用自定义提取中的正则表达式来直接从html页面捕获和提取关键字。

这是出现关键字的部分:

代码语言:javascript
复制
    <meta property="og:video:tag" content="lanshow">
    <meta property="og:video:tag" content="lanshow ep04">
    <meta property="og:video:tag" content="lanshow episodio 4">
    <meta property="og:video:tag" content="lanshow 4">
    <meta property="og:video:tag" content="directo unboxme">
    <meta property="og:video:tag" content="directo tecnologia">
    <meta property="og:video:tag" content="directo hardware">
    <meta property="og:video:tag" content="directo preguntas y respuestas">
    <meta property="og:video:tag" content="preguntas y respuestas unboxme">

它们也出现在一个又一个的下面,如下所示:

关键词:“ ep04,lanshow episodio 4,lanshow 4,directo unboxme,directo tecnologia,directo WEB,directo preguntas y respuestas unboxme",”c“:”“

是否有一种方法只捕获关键字,使用regex,捕获组或类似的东西?

我尝试过不同的regex组合,但是我得到了整个文本,甚至整个html的剩余文本都出现在提取中。

这只会测试第一个关键字:video:tag"content=.*?>

我还尝试了另一个regex,它在第一个关键字之后提取整个html文本。我需要找到一种方法,告诉提取器查找前后分隔符,并在提取时忽略它们,以便只得到之间的内容(实际关键字)。

这是前面的分隔符:

这是后面的分隔符:">

有办法吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-14 23:13:40

XPath表达式//meta[@property='og:video:tag']/attribute::content应该会为您提供所有相关信息。

这里是Python片段,因为我不熟悉尖叫的青蛙:

代码语言:javascript
复制
import requests
import lxml.html 
doc = lxml.html.parse('yt.html')
meta_tags = doc.xpath("//meta[@property='og:video:tag']/attribute::content")
for content in meta_tags:
    print content

或者(用regex is bad解析HTML并可能导致不必要的结果):我能想到的最简单的正则表达式匹配HTML标记。在您选择的编程语言或工具中,特殊字符和标志等细节可能有所不同,但这在许多情况下都适用:

代码语言:javascript
复制
<meta property="og:video:tag" content="(.+?)">

在Python脚本中:

代码语言:javascript
复制
import re
import requests

match_metas = re.compile('<meta property="og:video:tag" content="(.+?)">')
result = requests.get('https://www.youtube.com/watch?v=HHMdrAhVbLo')

print match_metas.findall(result.content)

结果:

代码语言:javascript
复制
['unboxing en directo', 'unboxing mionix color', 'rx 580', 'talk show', 'lanshow', 'lanshow ep04', 'lanshow episodio 4', 'lanshow 4', 'directo unboxme', 'directo tecnologia', 'directo hardware', 'directo preguntas y respuestas', 'preguntas y respuestas unboxme']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44361499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档