我用尖叫的青蛙刮youtube视频关键词。我知道这个软件会显示一个选项卡,准确地捕捉到这个元信息,但它只显示了160个字符,所以具有更大数量关键字的视频不会在其中显示。
无论如何,我也尝试通过软件上的自定义提取特性使用CSS选择器和Xpath,但是没有得到任何东西。
我最后能想到的是使用自定义提取中的正则表达式来直接从html页面捕获和提取关键字。
这是出现关键字的部分:
<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文本。我需要找到一种方法,告诉提取器查找前后分隔符,并在提取时忽略它们,以便只得到之间的内容(实际关键字)。
这是前面的分隔符:
这是后面的分隔符:">
有办法吗?
谢谢。
发布于 2017-06-14 23:13:40
XPath表达式//meta[@property='og:video:tag']/attribute::content应该会为您提供所有相关信息。
这里是Python片段,因为我不熟悉尖叫的青蛙:
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标记。在您选择的编程语言或工具中,特殊字符和标志等细节可能有所不同,但这在许多情况下都适用:
<meta property="og:video:tag" content="(.+?)">在Python脚本中:
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)结果:
['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']https://stackoverflow.com/questions/44361499
复制相似问题