【问题标题】:Scrape weather report from meteofrance.com with Python使用 Python 从meteofrance.com 抓取天气报告
【发布时间】:2020-12-06 08:33:33
【问题描述】:

目标:从meteofrance获取天气预报

使用的工具:Python 库(BeautifulSoup、requests 等)

问题:天气报告似乎只有在提供 JSON Web 令牌 (JWT) 的身份验证后才可用。实际上,我不知道如何使用 Python 库获取此令牌。换句话说,我需要在发出 GET 请求之前创建一个会话或类似的东西吗?

【问题讨论】:

    标签: python web-scraping jwt


    【解决方案1】:

    令牌是从会话 cookie 构建的。

    对JS包做一些逆向工程,JS函数如下

    const cookieContents = cookie.match(new RegExp('(^| )mfsession=([^;]+)'));
    const cookieField = decodeURIComponent(cookieContents[2]);
    const derivedToken = cookieField.replace(/[a-zA-Z]/g, function (e) {
        var t = e <= 'Z' ? 65 : 97;
        return String.fromCharCode(t + (e.charCodeAt(0) - t + 13) % 26)
    });
    

    例如,cookie

    mfsession=rlWwoTSmplV6VzyhqTIlozI0VvjvLJkaVwbvFSZlAGLvYPW0rKNvBvWXI1DvsD.rlWdqTxvBvV1A2D1MTSxMTVlAmx2MwEwBQuvAwyzLzSuMQVmBGywMvVfVzyuqPV6ZGL0ZGR0ZwV4BK0.GqCV776HuV8cYzOe8glWbslYcfHKcpocpAKctwmI5T0

    通向令牌

    eyJjbGFzcyI6ImludGVybmV0IiwiYWxnIjoiSFMyNTYiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1N2Q1ZGFkZGIyNzk2ZjRjODhiNjlmYmFhZDIzOTljZiIsImlhdCI6MTY0MTE0MjI4OX0.TdPI776UhI8pLmBr8tyJofyLpsUXpcbpcNXpgjzV5G0.

    因此,您需要至少执行两次抓取请求。第一个 HEAD 用于获取原始 HTML 页面的标题,以便您获得会话 cookie 作为回报。然后向任何 API 端点发出 GET 请求。

    由您自己翻译成 Python。

    【讨论】:

      猜你喜欢
      • 2017-02-15
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      相关资源
      最近更新 更多