当我发出 GET 请求(在 Python 中)时,我得到了翻译后的文本。如何获取英文内容?

Posted

技术标签:

【中文标题】当我发出 GET 请求(在 Python 中)时,我得到了翻译后的文本。如何获取英文内容?【英文标题】:I get translated text when I do a GET request (in Python). How to get English content? 【发布时间】:2017-09-20 04:49:30 【问题描述】:

我正在尝试通过网络抓取 this page 来取乐。

脚本运行良好,但一些电影的名称被翻译成罗马尼亚语(例如,“美女与野兽”“Frumoasa si野兽”)。

我猜服务器根据我的 IP 向我发送请求的内容。

但是,在我的浏览器中,我只能看到英文名称,无论我是使用我的 IP 还是通过浏览器的扩展程序激活 ***。这可能是因为浏览器的语言设置为英语并且翻译选项被关闭。

我的问题是:如何获得所有英文名称?

我可以在我的GET 请求中指定一些参数吗?

import requests
page = requests.get(some_URL)

我也在考虑使用服务器 ***(不仅仅是浏览器扩展),但我在 Lubuntu 上运行,安装免费 *** 似乎很头疼(要创建帐户等)。

如果有帮助,我会使用 Jupyter Notebook 进行编码。

【问题讨论】:

我们无法真正回答这个问题。这不是 Python 问题。 HTTP 服务器是黑盒子;我们无法看到他们的内部来确定他们如何做出决定。您必须进行实验;检查您的浏览器发送的内容(使用您的浏览器开发工具,查看标题和查询字符串),然后查看您需要复制的内容。 为什么这个标签是 html???? @SankarshMakam,对不起,我“思考”了几分之一秒,因为我将请求的内容解析为 HTML,这可能是相关的。但事实并非如此。刚删了,谢谢指出! 【参考方案1】:

我猜这个网站正在提供基于浏览器语言的页面。尝试在请求中设置它:

import requests

url = r"http://www.imdb.com/search/title?release_date=2017&page=1&ref_=adv_nxt"
headers = "Accept-Language": "en-US,en;q=0.5"
r = requests.get(url, headers=headers)

顺便说一句。检查 imdb web scrape 的政策。

【讨论】:

以上是关于当我发出 GET 请求(在 Python 中)时,我得到了翻译后的文本。如何获取英文内容?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ServiceStack JsonServiceClient 发出 Get 请求时,ContentType 为空

使用 swift 4 发出 GET 请求在游乐场中有效,但在项目中无效

数据无法保存在MSSQL中

如何使用授权标头发出 GET CORS 请求

无法从 Kubernetes 集群上的 Angular pod 向服务发出 GET 请求

如何从flutter应用程序向本地主机发出http get请求?