Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url Google新闻XML API:使用国家/语言参数_Url_Google Api_Google News - Fatal编程技术网

Url Google新闻XML API:使用国家/语言参数

Url Google新闻XML API:使用国家/语言参数,url,google-api,google-news,Url,Google Api,Google News,我想订阅来自Google News的RSS/XML提要,该提要捕获以下查询: 提到“studie”(德语中的“study”)的文章,用德语写成,来自任何国家 我正在使用,但对于本例,更容易在处查看UI输出,因此在本例中我将使用后一个URL库 现在,在文章中,谷歌提到了影响语言或国家的四个不同参数: hl(主机语言):假定最终用户正在键入的语言。例如,一个说英语的人输入“研究”,谷歌假设这个词是英语的,然后机器将结果翻译回英语。对我来说,导航到将重定向带有hl=en-US的URL(完整URL为)

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

提到“studie”(德语中的“study”)的文章,用德语写成,来自任何国家

我正在使用,但对于本例,更容易在处查看UI输出,因此在本例中我将使用后一个URL库

现在,在文章中,谷歌提到了影响语言或国家的四个不同参数:

  • hl
    (主机语言):假定最终用户正在键入的语言。例如,一个说英语的人输入“研究”,谷歌假设这个词是英语的,然后机器将结果翻译回英语。对我来说,导航到将重定向带有
    hl=en-US
    的URL(完整URL为)

  • gl
    :提升来源国与参数值匹配的搜索结果。我的web浏览器中的默认值是
    gl=US

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

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

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

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

因此,为此目的:

  • 我如何正确构造URL参数,以捕获来自任何国家、用德语编写的“提及“studie”(德语表示“study”)的文章?
  • 究竟什么是
    ceid
    ,为什么谷歌完全没有记录它?

*即:

导入urllib.parse >>>parse.parse_qs('q=study&hl=en-US&lr=lang_-de') {'q':['study'],'hl':['en-US'],'lr':['lang_de']} 与此相关但未解决任何问题:


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

https://news.google.com/rss?q=studie&hl=de-DE&gl=DE&ceid=DE:de
您也可以在主题中搜索,请参考以下答案:

谷歌新RSS的新URL已更改。您可以使用以下格式进行抓取。也可以看到一些例子

EDIT1:

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


获取代码我对RSS界面一无所知,但对于标准新闻用户界面,这可能有用:

ceid(country:language)是谷歌的新闻过滤器,因此lr(谷歌新闻似乎忽略了这一点)和cr通过只筛选新闻过滤器定义的新闻而受到更大的限制。美国英语新闻是ceid=US:en,英国英语新闻是ceid=GB:en。

注意:如果您没有指定ceid,将根据您当前的职位应用一个ceid。此外,谷歌新闻似乎一点也不关心lr参数:它坚持使用ceid语言,仅此而已。根据您的查询: 提及“studie”(德语中的“study”)的文章,用德语写成,来自任何国家, 我建议使用DE:DE的值,但是您可能会发现ceid参数对于“来自任何国家”都有一定的限制,但对此您无能为力。谷歌新闻是基于这样一个概念,即每个地方都有自己的新闻源,“来自任何国家”听起来非常像“地球上所有地方的所有新闻”,而没有这样的谷歌新闻。正如你所知,“世界”新闻并不完全一样。如果您需要在制作/出版国家/地区方面没有任何限制,您最好另谋出路。在谷歌的世界里,一个先进的谷歌搜索引擎在发布文档以获取新鲜度时应用限制可能是不可能被击败的

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

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
建议的搜索字符串中有两个错误:

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

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

另外,为了补充Sreeram Nair提供的国会图书馆链接,这里没有提供国家代码。您可以在此处找到国家代码:

•ISO 3166-1 alpha-2(两个字母的国家)标准,

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

•ISO 639-1(语言)代码列表

来源:维基百科文章

•软件术语区域设置,

•ISO 639(语言)标准,

你在《邮递员》或《卷发》中试过吗?只有Python和浏览器@EdwardAung。(默认情况下两者都允许重定向。)您是否怀疑curl会产生不同的行为?链接文档提到,
客户端
输出
、和
cx
参数都是必需的是,但这是针对Google Custom Search Engine@Ezphares的。news.google.com似乎不要求这些,如果文档仅对自定义搜索有效,那么我希望有关
hl
lr
的任何信息也仅在该上下文中有效
https://news.google.com/news/rss/search/section/q/economy
现在重定向到
https://news.google.com/rss/search?q=economy&hl=en-US&gl=US&ceid=US:en
,这让事情回到原来的问题上来谢谢,但不幸的是,这并不能完全回答问题。例如,尝试使用这种格式查找在英国发布的阿拉伯语新闻(ar)。您将看到重定向回
&hl=en-US&gl=US&ceid=US:en
,或者无论您的默认设置是什么,此链接可能有助于澄清
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
q=studie, not study, and
lr=de, not lang_de.