搜索增加文本的URL

时间:2015-10-15 18:51:45

标签: javascript html

对于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不是我最好的。

2 个答案:

答案 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构建一个刮刀。

  1. 安装Node.js
  2. 安装请求npm i request
  3. 安装cheerio npm i cheerio
  4. 创建文件scraper.js
  5. 运行node scraper.js
  6. 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);
    }
    

    上面的代码似乎很复杂,但我认为这是应该做的。你可以使用任何其他刮削工具库。