对于stekhn,这是正确的链接:var location = "http://www.roblox.com/Trade/inventoryhandler.ashx?filter=0&userid=" + i + "&page=1&itemsPerPage=14";
我正在尝试创建一个Javascript脚本,我可以在其中搜索用户广告资源,检测他们是否拥有我在其广告资源中查找的内容,并输出用户ID(如果有的话)。
如果我输入bluesteel,我需要一个Javascript脚本,它将搜索http://snackyrite.com/site.ashx?userid=1并检测它是否有“bluesteel”文本 - 如果是,我需要它来显示用户ID,这是1。
您可能认为这很简单,我可以很容易地找到该脚本 - 好吧有一个问题,我的目标不仅仅是让它搜索userid = 1,我需要它来从userid搜索= 1到用户ID = 45356
如果在userid = 5,userid = 3054和userid = 12(这些只是示例)上找到'bluesteel'这个词,我需要它在同一页面上显示5,3054和12(ID)脚本是从。
运行的这是我尝试过的脚本,但是用户ID不会增加(我不知道该怎么做)。
var location = http://snackyrite.com/site.ashx?userid=1;
if(location.indexOf("bluesteel") > -1) {
output.userid
}
我道歉,Javascript不是我最好的。
答案 0 :(得分:1)
使用循环:
for (var i = 1; i <=45356; i++) {
var loc = "http://snackyrite.com/site.ashx?userid="+i;
// get contents of location
if (contents.indexOf("bluesteel") > -1) {
console.log(i);
}
}
由于获取内容可能会使用AJAX,if
可能会在回调函数中。请参阅Javascript infamous Loop issue?了解如何编写循环,以便在回调函数中保留i
。
答案 1 :(得分:0)
这种网页抓取无法在浏览器中进行(客户端JavaScript)。
我建议用Node.js构建一个刮刀。
npm i request
npm i cheerio
scraper.js
node scraper.js
scraper.js
的代码
// Import the scraping libraries
var request = require("request");
var cheerio = require("cheerio");
// Array for the user IDs which match the query
var matches = [];
// Do this for all possible users
for (var i = 1; i <= 45356; i++) {
var location = "http://snackyrite.com/site.ashx?userid="+i;
request(location, function (error, response, body) {
if (!error) {
// Load the website content
var $ = cheerio.load(body);
var bodyText = $("body").text();
// Search the website content for bluesteel
if (bodyText.indexOf("bluesteel") > -1) {
console.log("Found bluesteel in inventory of user ", i);
// Save the user ID, if bluesteel was found
matches.push(i);
}
// Something goes wrong
} else {
console.log(error.message);
}
});
console.log("All users with bluesteel in inventory: ", matches);
}
上面的代码似乎很复杂,但我认为这是应该做的。你可以使用任何其他刮削工具库。