我正试图从服务器端点击一下。
我正在使用nodeJS而我无法使用JQuery函数。
我会点击.next
课程。
这就是我要做的事情:
while (nbrPage > 0)
{
//my scraping code
nbrPage--;
$('.next').click();
}
注意要刮掉的html代码是这样的:
<span class="next">
<a id="nextPage-159c6fa8635" class="page" href="/blablabla"></a>
</span>
有没有人知道如何在NodeJS代码中使用JQuery方法或如何在NodeJS中使用click函数?
编辑:我正在抓取一个网站,我想循环每个分页并从每个页面中删除我的数据。为此,我需要转到下一页并单击下面的html代码。换句话说,我会在我的节点js代码中使用$('.next').click()
之类的JQuery函数(使用request
和cheerio
)。
请注意,我不想处理点击事件,我希望点击。
感谢您的帮助
答案 0 :(得分:0)
Cheerio是一个非常有用的工具,它允许您在Node.JS中使用jQuery。您可以在 - https://github.com/cheeriojs/cheerio
找到更多信息请求旨在成为制作http的最简单方法 调用。它支持HTTPS并默认遵循重定向。
查看他们的文档 - https://github.com/request/request
对于服务器端,您需要创建一个函数来查找id为以“nextPage-”开头的href。然后IF发现你需要获得属性href的值。
从那里你可以将该值传递回你的“请求”脚本,我假设你已经拥有并继续你的报废,直到找不到“nextPage-”。
调用自身的函数的重复序列称为“递归”。
现在看看代码中的内容 -
// Load Dependencies
const CHEERIO = require("cheerio");
const REQUEST = require("request");
/**
* Scraps HTML to find next page URL
*
* @function getNextPageUrl
*
* @param {string} HTML
*
* @returns {string || boolean} Returns URL or False
*/
function getNextPageUrl(HTML) {
// Load in scrapped html
let $ = CHEERIO.load(HTML);
// Find ID that starts with `nextPage-`
let nextPage = $("span[id^='nextPage-']:first");
// If it is 0, its false
if(nextPage.length) {
// Return href attribute value
return nextPage.attr("href");
} else {
// Nothing found, return false
return false;
}
}
/**
* Scraps the HTML from pages
*
* @function scrapper
*
* @param {string} URL
*
* @returns {string || boolean} Returns URL or False
*/
function scrapper(URL) {
// Check if URL was provided
if(!URL) {
return fasle;
}
// Send out request to URL
REQUEST(URL, function(error, response, body) {
// Check for errors
if(!error && response.statusCode == 200) {
console.log(body) // Show the HTML
// Recursion
let URL = getNextPageURL(body);
scrapper(URL);
} else {
return false;
}
});
}
// Pass to scrapper function test
//console.log(getNextPageURL("<span class='next'><a id='nextPage-159c6fa8635' class='page' href='/blablabla'></a></span>"));
// Start the initial scrapping
scrapper("http://google.com");
答案 1 :(得分:-1)
在Node.js中无法做到这一点。 Node.js是服务器端,而不是客户端。 作为解决方案,您可以在链接中解析 href 并请求废弃下一页。这就是服务器端抓取器通常的工作方式。