使用python反转AMP url(从AMP获取常规url)

使用python反转AMP url(从AMP获取常规url),python,python-3.x,url,amp-html,Python,Python 3.x,Url,Amp Html,我将如何扭转谷歌AMPAPI的进程 我期待着采取一个AMP(加速移动页面)的网址,并提出了常规(原始)网址。我想知道是否有人知道如何用Python(或任何其他语言)实现这一点? 任何帮助都将不胜感激 例如: 预期输出: 第二个例子: 预期输出: 第三个(也是最后一个)示例: 预期输出: 不幸的是,AMP的实现似乎相差很大。我想一种方法可能是删掉任何“amp”和周围的点(.)或斜线(/),然而,我可以想象这样一种情况,在这种情况下,这不是最明智的方法(主要是如果页面URL的结尾实际上应该

我将如何扭转谷歌AMPAPI的进程

我期待着采取一个AMP(加速移动页面)的网址,并提出了常规(原始)网址。我想知道是否有人知道如何用Python(或任何其他语言)实现这一点? 任何帮助都将不胜感激

例如:


预期输出:

第二个例子:


预期输出:

第三个(也是最后一个)示例:


预期输出:


不幸的是,AMP的实现似乎相差很大。我想一种方法可能是删掉任何“amp”和周围的点(.)或斜线(/),然而,我可以想象这样一种情况,在这种情况下,这不是最明智的方法(主要是如果页面URL的结尾实际上应该有amp等(它出现在常规浏览中).

对于将来遇到这种情况的人,我想我会分享我的解决方案。使用@daKmoR提供的信息,我最终能够得出以下结论:

import metadata_parser
page = metadata_parser.MetadataParser(url="https://amp.cnn.com/cnn/2018/03/08/politics/jeff-flake-anti-tariff-bill/ ")
#page = metadata_parser.MetadataParser(url="https://www.google.ca/amp/s/www.theverge.com/platform/amp/2018/3/8/17097904/android-ios-smartphone-brand-loyalty/")
#print(page.metadata)
#TODO: Doesnt work for verge
print("New")
real_URL = page.get_metadata_link('url')
if real_URL:
    print(real_URL)
else:
    print("Boo")
如果您遇到诸如“TLSV1\u ALERT\u PROTOCOL\u VERSION”之类的错误,那么您可能正在使用过时的Python版本进行编译

编辑: 这是根据@sebastian benz的回复更新的代码

import metadata_parser
#page = metadata_parser.MetadataParser(url="https://amp.cnn.com/cnn/2018/03/08/politics/jeff-flake-anti-tariff-bill/ ")
page = metadata_parser.MetadataParser(url="https://www.google.ca/amp/s/mobile.nytimes.com/2018/03/08/us/politics/trump-tariff-announcement.amp.html")
#print(page.metadata)
#TODO: Doesnt work for verge
print("New")
#real_URL = page.get_metadata_link('url')
real_URL = page.get_url_canonical()
if real_URL:
    print(real_URL)
else:
    print("Boo")

对于将来遇到这种情况的人,我想我会分享我的解决方案。利用@daKmoR提供的信息,我最终得出以下结论:

import metadata_parser
page = metadata_parser.MetadataParser(url="https://amp.cnn.com/cnn/2018/03/08/politics/jeff-flake-anti-tariff-bill/ ")
#page = metadata_parser.MetadataParser(url="https://www.google.ca/amp/s/www.theverge.com/platform/amp/2018/3/8/17097904/android-ios-smartphone-brand-loyalty/")
#print(page.metadata)
#TODO: Doesnt work for verge
print("New")
real_URL = page.get_metadata_link('url')
if real_URL:
    print(real_URL)
else:
    print("Boo")
如果您遇到诸如“TLSV1\u ALERT\u PROTOCOL\u VERSION”之类的错误,那么您可能正在使用过时的Python版本进行编译

编辑: 这是根据@sebastian benz的回复更新的代码

import metadata_parser
#page = metadata_parser.MetadataParser(url="https://amp.cnn.com/cnn/2018/03/08/politics/jeff-flake-anti-tariff-bill/ ")
page = metadata_parser.MetadataParser(url="https://www.google.ca/amp/s/mobile.nytimes.com/2018/03/08/us/politics/trump-tariff-announcement.amp.html")
#print(page.metadata)
#TODO: Doesnt work for verge
print("New")
#real_URL = page.get_metadata_link('url')
real_URL = page.get_url_canonical()
if real_URL:
    print(real_URL)
else:
    print("Boo")

AMP页面需要通过以下方式引用其规范版本:

<link rel="canonical" href="https://www.example.com/url/to/full/document.html">

发现页面的非AMP版本的正确方法是获取AMP文档并提取其规范链接标记的href值


您可以在中了解更多信息。

AMP页面需要通过以下方式引用其规范版本:

<link rel="canonical" href="https://www.example.com/url/to/full/document.html">

发现页面的非AMP版本的正确方法是获取AMP文档并提取其规范链接标记的href值


您可以在中了解更多信息。

对于Python 3,另一个选项可以是打开url并从响应中获取最终url。 以下是@jadelord对以下问题的回答:


对于Python3,另一个选项是打开url并从响应中获取最终url。 以下是@jadelord对以下问题的回答:


你能再澄清一下吗?不知道你的意思。也许可以添加一个具体的例子,比如一个url/链接作为输入,以及作为一个output@daKmoR添加3个示例扫描您请进一步澄清这一点-不确定您的意思。可能添加一个具体的示例,如url/链接作为输入,以及您希望作为output@daKm或添加3个示例