【问题标题】:Nodejs unable to request url with request-promiseNodejs 无法使用 request-promise 请求 url
【发布时间】:2021-05-23 06:31:54
【问题描述】:

我无法使用以下代码从 OpenTable 网站获取 https。但是,当我尝试从其他站点获取数据时,例如Instagram 使用相同的代码,它可以工作。由于我刚开始学习使用 node js 进行网络抓取,您能告诉我可能是什么问题吗?

const request = require('request-promise');



(async () => {

    const BASE_URL = 'https://www.opentable.co.uk/s?dateTime=2021-05-30T19%3A00%3A00&covers=2&latitude=51.525225&longitude=-0.079615'


    let response = await request(BASE_URL);

    let $ = cheerio.load(response);
    
    console.log(response);

  
  })();

【问题讨论】:

  • 您可能想要设置一些标题。此外,这些天你可能应该使用 axios。

标签: node.js web-scraping cheerio request-promise


【解决方案1】:

您的代码很可能无法正常工作,因为 JavaScript 用于在网站上构建 DOM。或者该站点正在使用防刮保护。无论如何,我会建议你像Puppeteer

const puppeteer = require("puppeteer-extra");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");

puppeteer.use(StealthPlugin());

async function scrapeOpenTable() {
  const BASE_URL =
    "https://www.opentable.co.uk/s?dateTime=2021-05-30T19%3A00%3A00&covers=2&latitude=51.525225&longitude=-0.079615";

  const browser = await puppeteer.launch({
    headless: false,
    args: ["--no-sandbox", "--disable-setuid-sandbox"],
  });
  const page = await browser.newPage();
  await page.goto(BASE_URL);
  // More commands here...
  /* You may view the docs at:
       https://pptr.dev/
     And more magic at:
       https://www.npmjs.com/package/puppeteer
     Github:
       https://github.com/puppeteer/puppeteer
  */

  // await browser.close();
}

scrapeOpenTable();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 2018-03-09
    • 2016-06-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多