解码包含同意信息的 Google 新闻网址时出现问题

问题描述 投票:0回答:1

当我在 Python 中解码 base64 Google 新闻 URL 时遇到一个特殊问题,因为它们不仅包含 URL,还包含同意信息。

基于较旧的问题解码 Google 新闻网址,我在一个较大的脚本中编写了以下函数,可以正确解码 99% 的 URL:

def decode_google_url(e):
    global faulty_urls
    faulty_urls=[]
    # trim leading/trailing whitespace
    e = e.strip()
    # decode string to get target URL
    try:
        target_url = base64.b64decode(e)[4:].decode('utf-8', "backslashreplace").split('\\')[0]
        target_urls.append(target_url)
    except Exception as ex:
        print(f"Error decoding URL: {ex}")
        # all exceptions are triggered by links that contain consent information as well as URLs
        faulty_urls.append(e)

    return faulty_urls
    return target_urls

正如您在评论中看到的,异常是由似乎也包含同意信息的编码 URL 触发的。一个例子是下面的 276 个字符的字符串,我的脚本中的 base64 无法解码,因为据称它不代表 4 的倍数:

CBMiYWh0dHBzOi8vd3d3LnRpbWVzb2Zpc3JhZWwuY29tL2Zvci15ZWFycy1uZXRhbnlhaHUtcHJvcHBlZC11cC1oYW1hcy1ub3ctaXRzLWJsb3duLXVwLWluLW91ci1mYWNlcy_SAWVodHRwczovL3d3dy50aW1lc29maXNyYWVsLmNvbS9mb3IteWVhcnMtbmV0YW55YWh1LXByb3BwZWQtdXAtaGFtYXMtbm93LWl0cy1ibG93bi11cC1pbi1vdXItZmFjZXMvYW1wLw==

当我将其放入在线解码器时,我得到以下信息:

“我已年满 18 岁,并且我同意根据本网站的隐私政策处理我的个人数据。 https://www.timesofisrael.com/for-years-netanyahu-proppped-up-hamas-now-its-blown-up-in-our-faces-🔓 https://www.timesofisrael.com/多年来内塔尼亚胡支持哈马斯,现在它在我们脸上爆炸了/地图/“

从字符串中删除同意信息和图标以仅保留 URL 不会有问题,但我什至无法在脚本中获得此解码结果,因为输入字符串会触发错误。

python base64 google-news
1个回答
0
投票

不幸的是,我还无法解决字符串解码的问题,但我能够使用 newspaper3k 包抓取我需要的新闻。对于某些付费网站等,我仍然遇到一些 401 错误,但我可以通过简单的错误处理来排除这些错误,并将重点放在公开可用的网站上。 Google 同意书不再是问题。

© www.soinside.com 2019 - 2024. All rights reserved.