【问题标题】:fetch url with cookies使用 cookie 获取 url
【发布时间】:2021-06-13 12:28:18
【问题描述】:

所以我抓取一个网络,我需要使用特定的 cookie,但我不知道如何准确地使用“获取”

    const url="https://www.example.com";
    let response = await fetch(url),
        html = await response.text();

    let $ = cheerio.load(html)

    var example= $('.exampleclass').text();  

现在我可以抓取网络,但如果我不得不使用特定的 cookie,我不知道如何将其放入 fetch。

在 python 中是这样的

response = requests.get(url, headers=headers, cookies=cookies)

谢谢!

【问题讨论】:

  • 您使用的是哪个模块? node-fetch?
  • 可以参考这个this previous post
  • @Muhammad.fatiu 这个问题是关于浏览器内获取的; OP 的问题是关于节点的。
  • 无论如何,要设置 cookie,您需要添加 Cookie headerawait fetch(url, { headers: { "Cookie": "a=b" }}) 之类的东西应该这样做。
  • 仅供参考,它是 scrapescraping 不是废品和报废

标签: javascript node.js web


【解决方案1】:

您可以在 node-fetch 的标题上添加 cookie,我已经制作了一个辅助函数,您可以将其用于您的目的:

const cookieMaker = object => {
    const cookie = [];
    for (const [key, value] of Object.entries(object)) {
        cookie.push(`${key}=${value}`);
    }
    return cookie.join('; ');
};

const fetchText = async (url, cookie) => {
    const r = await fetch(url, {
        headers: {
            Cookie: cookieMaker(cookie),
        },
    });
    return await r.text();
};

fetchText('http://someurl.com', { token: 'abc', myValue: 'def' });

【讨论】:

    猜你喜欢
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2016-04-06
    相关资源
    最近更新 更多