【问题标题】:How can I GET content of a HTTPS webpage?如何获取 HTTPS 网页的内容?
【发布时间】:2016-12-07 09:52:39
【问题描述】:

我想通过在 NodeJs 上运行 javascript 代码来获取网页的内容。我希望内容与我在浏览器中看到的内容完全相同。

这是URLhttps://www.realtor.ca/Residential/Single-Family/17219235/2103-1185-THE-HIGH-STREET-Coquitlam-British-Columbia-V3B0A9

我使用以下代码,但在response 中得到405

var fs = require('fs');
var link = 'https://www.realtor.ca/Residential/Single-Family/17219235/2103-1185-THE-HIGH-STREET-Coquitlam-British-Columbia-V3B0A9';
var request = require('request');
request(link, function (error, response, body) {
    fs.writeFile("realestatedata.html", body, function(err) {
        if(err) {
            console.log('error in saving the file');
            return console.log(err);
        }
        console.log("The file was saved!");
    });
})

保存的文件与我在浏览器中看到的内容无关。

【问题讨论】:

  • 服务器似乎不支持您发送的请求。您是否尝试过 request('realtor.ca/Residential/Single-Family/17219235/… ?请注意,无论如何,当您仅打开 html 时,页面不会以相同的方式呈现,因为它还需要许多其他资源(显示页面时会完成 110 个请求)。
  • 我尝试了以wwwrealtor.ca 开头的网址,但均未成功。怎么可能使它工作?我的意思是如何运行所有 110 个请求?

标签: javascript node.js request


【解决方案1】:

由于我的评论被截断,我认为真正的答案会更容易理解。

服务器似乎不支持您发送的请求的方法(405 Method Not Allowed - Request-Line 中指定的方法不允许用于 Request-URI 标识的资源。响应必须包含允许包含请求资源的有效方法列表的标头。)。你有更多关于 HTTP 响应的信息吗? 您是否尝试过以下代码而不是您的代码?

request('https://www.realtor.ca/Residential/Single-Family/17219235/2103-1185-THE-HIGH-STREET-Coquitlam-British-Columbia-V3B0A9').pipe(fs.createWriteStream('realestatedata.html')) 

你也可以看看In Node.js / Express, how do I "download" a page and gets its HTML?

请注意,无论如何,当您只打开 html 时,页面将不会以相同的方式呈现,因为它还需要许多其他资源(显示页面时会完成 110 个请求)。 我认为以下答案可以帮助您下​​载整个页面。 https://stackoverflow.com/a/34935427/1630604

【讨论】:

  • 我知道它不会像在浏览器中那样显示,我只想拥有 HTML 内容(以便能够抓取它)。我使用了第一个链接中建议的内容,但它不起作用。它从同一网站打开一个页面,但它说您要查找的页面不存在。您的建议也是如此。
猜你喜欢
  • 2010-11-06
  • 2011-02-22
  • 2020-07-24
  • 2011-06-24
  • 2011-07-15
  • 2011-01-23
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多