4

我想订阅来自 Google 新闻的 RSS/XML 提要,该提要捕获以下查询:

提及“studie”(德语为“study”)的文章,用德语撰写,来自任何国家。

我正在使用https://news.google.com/rss/search ,但对于本示例,在https://news.google.com/search上查看 UI 输出更容易,因此我将使用后者此示例中的 URL 基础。

现在,在XML API 参考中,Google 提到了影响语言或国家/地区的四个不同参数:

  • hl(主机语言):假定最终用户输入的语言。即,说英语的人输入“学习”,Google 假定该术语是英语,然后将结果机器翻译回英语。对我来说,导航到将重定向一个 URL hl=en-US(完整 URL 是https://news.google.com/?hl=en-US&gl=US&ceid=US:en)。

  • gl:提升原产国与参数值匹配的搜索结果。我的网络浏览器中的默认设置是gl=US.

  • lr(语言限制):将搜索结果限制为以特定语言编写的文档

  • cr(国家限制):将搜索结果限制为源自特定国家的文档

基于以上所有内容,这将意味着 * 的 URL:

https://news.google.com/search?q=study&hl=en-US&lr=lang_de

然而,这种尝试惨遭失败。它显示来自美国的英语结果,它 302 重定向到:

https://news.google.com/search?q=study&lr=lang_de&hl=en-US&gl=US&ceid=US:en

所以,为此:

  • 如何正确构建 URL 参数以捕获来自任何国家/地区的“提及“studie”(德语为“study”)的文章,用德语编写。
  • 到底是什么ceid,为什么谷歌完全没有记录它?

* IE:

>>> import urllib.parse
>>> urllib.parse.parse_qs('q=study&hl=en-US&lr=lang_de')                                                                                                     
{'q': ['study'], 'hl': ['en-US'], 'lr': ['lang_de']}

相关但不解决任何问题:

4

3 回答 3

0

我正在使用以下 URL,它适用于我:

https://news.google.com/rss?q=studie&hl=de-DE&gl=DE&ceid=DE:de

您也可以在主题中搜索,请参考此答案: Google News RSS feed 的 URL 格式

于 2019-09-11T14:43:56.597 回答
0

我对 RSS 界面一无所知,但至于标准新闻 UI,也许这可以使用:

ceid (country:language) 是 Google 的新闻过滤器,因此 lr(Google 新闻似乎忽略了它)和 cr 仅通过筛选新闻过滤器定义的新闻而受到进一步限制。对于美国英语新闻,它是 ceid=US:en,对于英国新闻,它是 ceid=GB:en。 来源:https://rapidapi.com/apigeek/api/google-search3/details

注意:如果您未指定 ceid,将根据您当前的位置应用一个 ceid。此外,Google 新闻似乎根本不关心 lr 参数:它坚持使用 ceid 的语言,仅此而已。根据您的查询:提及“studie”(德语为“study”)的文章,用德语撰写,来自任何国家,我建议使用 DE:de 的值,但是您可能会发现 ceid 参数在“源自任何国家”,但您对此无能为力。谷歌新闻是基于每个地方都有自己的新闻提要的概念,“来自任何国家”听起来很像“来自地球上所有地方的所有新闻”,而且没有这样的谷歌新闻。正如你所知,“世界”新闻并不完全相同。如果您根本不需要对生产/出版国家/地区进行任何限制,那么您最好寻找另一个出口。在 Google 世界中,在文档发布时应用限制的高级 Google 搜索可能无法被击败。

搜索中涉及的其他四个参数是:

hl, host(interface) language: hl=de
gl, boost country of origin: gl=DE
lr, restrict results to language: lr=de
cr, restrict results to country: none

建议的搜索字符串中有两个错误:

https://news.google.com/search?q=study&hl=en-US&lr=lang_de

q=studie, not study, and
lr=de, not lang_de.

但是,Google 新闻并不关心 lr 参数:它坚持使用 ceid 的语言。此外,hl 始终设置为 ceid 的语言,而 gl 设置为国家/地区部分,我建议您使用 DE:de 的 ceid 进行查询。

因此 DE:de 的搜索字符串变为:

https://news.google.com/search?q=studie&hl=de&gl=DE&ceid=DE:de

另外要添加到 Sreeram Nair 提供的国会图书馆链接,那里没有给出国家代码。您可以在此处找到国家/地区代码:

• ISO 3166-1 alpha-2(2 个字母的国家/地区)标准, https://en.m.wikipedia.org/wiki/ISO_3166-1_alpha-2

您还可能会发现此文档的语言代码更易于在手机上阅读:

• ISO 639-1(语言)代码列表 https://en.m.wikipedia.org/wiki/List_of_ISO_639-1_codes

来源:维基百科文章

• 软件术语区域设置, https://en.m.wikipedia.org/wiki/Locale_(computer_software)

• ISO 639(语言)标准, https://en.m.wikipedia.org/wiki/ISO_639

于 2021-02-12T23:50:57.263 回答
-1

Google 新 RSS 的新 URL 已更改。您可以使用以下格式进行提取。也可以在这里看到示例。

usage: gnrss2opml.py [-h] [-o OUTPUT] [-c COUNTRY] [-l LANGUAGE] [-s]
                     [-t [TOPIC [TOPIC ...]]] [-g [LOCATION [LOCATION ...]]]
                     [-q [QUERY [QUERY ...]]]

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        output file name (default: print to stdout)
  -c COUNTRY, --country COUNTRY
                        country / Google News edition (default: us)
  -l LANGUAGE, --language LANGUAGE
                        language (default: en)
  -s, --stories         include Top Stories
  -t [TOPIC [TOPIC ...]], --topics [TOPIC [TOPIC ...]]
                        list of topics, will be converted to uppercase
                        (default: WORLD NATION BUSINESS TECHNOLOGY
                        ENTERTAINMENT SPORTS SCIENCE HEALTH)
  -g [LOCATION [LOCATION ...]], --locations [LOCATION [LOCATION ...]]
                        list of geographic locations (default: None)
  -q [QUERY [QUERY ...]], --queries [QUERY [QUERY ...]]
                        list of search queries (default: None)

编辑1:

可以在参数中指定 2 个字母的语言代码和国家代码。

从这里获取代码

于 2019-09-12T09:01:37.553 回答