【问题标题】:Fetching Google search results through YAML通过 YAML 获取 Google 搜索结果
【发布时间】:2018-11-24 22:30:44
【问题描述】:

注意:我完全是 YAML 的初学者,我还不明白为什么以及如何使用 YAML。所以,我的问题可能包含一些与 YAML 无关的内容。对不起,请纠正他们。

在音乐播放器 (MusicBee) 中,我找到了一个插件,可以获取歌曲的歌词。从歌词提供者获取歌词的方式写在 YAML 文件 (yml) 中。并且作为示例,来自AZLyrics 的歌词由以下 yml 文件获取;

name: A-Z Lyrics Universe
url: "http://www.azlyrics.com/lyrics/{artist}/{title}.html"
extractor: '(?s)<div>\s+<!--\s+Usage.*?\s+-->(?P<lyrics>.+?)<\/div>'

headers:
- name: User-Agent
  value: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0' # Firefox 30 Win x64 user agent

variables:
- &artist
  name: artist
  filters:
    - [lowercase]
    - [strip_nonascii]
- <<: *artist
  name: title

filters:
- [strip_html]
- [trim]
- [utf8_encode]

这里歌词的 URL 直接由下式给出;

http://www.azlyrics.com/lyrics/{artist}/{title}.html

但这是我的问题。而不是使用上面的链接,我需要做一个简单的谷歌搜索

https://www.google.lk/search?q={artist}+{title}+azlyrics+lyrics

并从搜索结果中获取第一个 URL,然后将其用作歌词的 URL。

问题:

  1. YAML 是否能够完成我需要完成的任务?
  2. 如果是,我该怎么做? google结果如何处理?
  3. 如果没有,您能给我一些建议吗,我必须走什么路才能完成我的任务?

注意:这是给定插件的source code

【问题讨论】:

  • YAML 是一种数据序列化语言。将其与 JSON 进行比较,尽管它更强大一些。它不是一种编程语言,也没有 YAML 解释器。它当然无法获取 url。
  • @tinita 我们不能在 YAML 中使用函数吗?
  • 您可以在 YAML 中使用函数,但这取决于用于加载 YAML 文档的程序库、程序语言以及它们是否使用“安全”加载(他们应该这样做)。鉴于任何分发不使用安全加载程序的人都应该被扔出我们赖以生存的宇宙飞船,并且它是用 C# 编写的,因此您不太可能进行任何间接加载,除非该程序/plugin 实现了它(并且阅读文档,它没有)。

标签: json yaml google-search


【解决方案1】:

NO 你不能用 YAML 来做这件事,因为它只是一个

YAML 是一种人类可读的数据序列化语言

因此,您必须为这些内容选择一种编程语言。它支持发出 HTTP 请求(最著名的一次确实支持。)

这里你没有提到你熟悉的语言,所以我不会详细说明,只是步骤

  1. 向为 Google 构建的 URL 发出 HTTP 请求
  2. 解析获取的结果
  3. 阅读结果中可用的第一个链接
  4. 在任何地方使用该结果。

您使用每种语言都会改变执行每项任务的方式。但是是的,它几乎可以分解为这一点。

更新:

Google 提供 API 进行查询,对于 JAVA 示例可以查看this

【讨论】:

  • 谢谢。 Java、C++是我最熟悉的语言。如果您可以针对这种语言提出更多详细信息,那将非常有用。
  • 如果您卡在某个地方,请告诉我。
  • 非常感谢您的帮助。我会让你知道我的进步。
【解决方案2】:

YAML/YML 是 .properties/.json 文件的另一种替代方案,但对开发人员/用户更友好。

通常,“.yml”文件用于指定应用程序的配置/元数据。

简单地说,它是一种数据表示格式,本身什么也不做。

您的代码必须读取 YAML 文件的内容并执行操作,在这种情况下,该操作是在 google 搜索结果。

就像有用于从 .json 文件中读取内容的特定语言库一样,也有用于从 .yml 文件中读取内容的库。

查看http://yaml.org/ 链接。

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多