【问题标题】:node js async request cant get body of web page节点js异步请求无法获取网页正文
【发布时间】:2017-11-22 00:35:23
【问题描述】:

我想从 1000 多个 url 的列表中获取网页的正文(我的目标是使用cheerio 进行抓取)。 问题是我得到了一个奇怪的 GUNZIP 结果,我无法获得 body 标签的内容。这是我正在使用的代码(我不能使用简单的“请求”,因为它错过了一些请求

var async = require('async');
var fetch = require('isomorphic-unfetch');
const cheerio = require('cheerio');

let urls= // reading a list of ~1000 URLs from JSON file

async.mapLimit(urls, 1, async function(url) {
  const response = await fetch(url);
  return response.body
}, (err, results) => {
     if (err) throw err
     console.log(results);
});

【问题讨论】:

  • 我认为需要更多信息。例如,什么是奇怪的 gunzip 结果?这是针对所有人的,还是只是一个 URL?会不会和这个有关:link

标签: node.js async-await httprequest fetch


【解决方案1】:

问题是我得到了一个奇怪的 GUNZIP 结果

使用 zlib,

var zlib = require('zlib');


async.mapLimit(urls, 1, async function(url) {
  const response = await fetch(url);

  zlib.gunzip(response.body, function(err, dezipped) {
      return (dezipped.toString());
  });
}, (err, results) => {
     if (err) throw err
     console.log(results);
});

然后用cheerio 进行解析:)
我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2016-04-25
    • 2021-03-24
    相关资源
    最近更新 更多