gpt4 book ai didi

javascript - 我可以只使用 Node 来抓取这个网站吗?

转载 作者:行者123 更新时间:2023-12-03 05:47:04 25 4
gpt4 key购买 nike

我对 JavaScript 还很陌生,所以请耐心等待。我一直在尝试抓取一个网站并获取列表中的所有产品 URL,稍后我将在其他功能中使用该列表,如下所示:

url='https://www.fromuthtennis.com/frm/c-10-mens-tops.aspx'

var http = require('http-get');
var request = require("request");
var cheerio = require("cheerio");


function getURLS(url) {
request(url, function(err, resp, body){
var linklist = [];
$ = cheerio.load(body);
var links = $('#productResults a');
for(valor in links) {
if(links[valor].attribs && links[valor].attribs.href && linklist.indexOf(links[valor].attribs.href) == -1){
linklist.push(links[valor].attribs.href);
}
}
var extended_links = [];
linklist.forEach(function(link){
extended_link = 'https://www.fromuthtennis.com/frm/' + link;
extended_links.push(extended_link);
})
console.log(extended_links);
})
};

除非您转到如下项目的第二页,否则这确实有效:

url='https://www.fromuthtennis.com/frm/c-10-mens-tops.aspx#Filter=[pagenum=2*ava=1]'

var http = require('http-get');
var request = require("request");
var cheerio = require("cheerio"); //etc...

据我所知,发生这种情况是因为页面上的内容是动态加载的。为了获取页面的内容,我相信我需要使用 PhantomJS,因为这将允许我在页面完全加载后获取 html 代码,所以我安装了 phantomjs-node 模块。我想使用 NodeJS 来获取 URL 列表,因为我的其余代码都写在上面。

我已经阅读了很多有关 PhantomJS 的内容,但是使用 phantomjs-node 很棘手,而且我仍然不明白如何使用它来获取 URL 列表,因为我对 JavaScript 或一般编码非常陌生。

如果有人可以指导我一点,我将非常感激。

最佳答案

是的,可以。该页面看起来像是实现了 Google's Ajax Crawling URL .

基本上,它允许网站为 Google 生成适合抓取工具的内容。每当您看到这样的 URL 时:

https://www.fromuthtennis.com/frm/c-10-mens-tops.aspx#Filter=[pagenum=2*ava=1]

您需要将其转换为:

https://www.fromuthtennis.com/frm/c-10-mens-tops.aspx?_escaped_fragment_=Filter%3D%5Bpagenum%3D2*ava%3D1%5D

转换只需采用基本路径:https://www.fromuthtennis.com/frm/c-10-mens-tops.aspx,添加查询参数_escaped_fragment_ who 的值是使用标准编码为 Filter%3D%5Bpagenum%3D2*ava%3D1%5D 的 URL 片段 Filter=[pagenum=2*ava=1] URI 编码。

您可以在此处阅读完整规范:https://developers.google.com/webmasters/ajax-crawling/docs/specification

Note: This does not apply to all websites, only websites that implement Google's Ajax Crawling URL. But you're in luck in this case

关于javascript - 我可以只使用 Node 来抓取这个网站吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com