2013-03-11 25 views
8

Ngay bây giờ ứng dụng của chúng tôi ghi mã nguồn của nodejs.org vào bảng điều khiển. Thay vào đó, chúng tôi muốn viết tất cả các siêu liên kết của nodejs.org. Có lẽ chúng ta chỉ cần một dòng mã để lấy các liên kết từ body.trích xuất tất cả các siêu liên kết (từ trang web bên ngoài) bằng cách sử dụng node.js và yêu cầu

app.js:

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

var request = require("request"); 



request("http://nodejs.org/", function (error, response, body) { 
    if (!error) 
     console.log(body); 
    else 
     console.log(error); 
}); 

Trả lời

35

Bạn có thể tìm cho một trong hai jsdom, jquery hoặc cheerio. Những gì bạn đang làm được gọi là cạo màn hình, trích xuất dữ liệu từ một trang web. jsdom/jquery cung cấp bộ công cụ hoàn chỉnh nhưng cổ vũ nhanh hơn nhiều.

Dưới đây là một ví dụ từ biệt:

var request = require('request'); 
var cheerio = require('cheerio'); 
var searchTerm = 'screen+scraping'; 
var url = 'http://www.bing.com/search?q=' + searchTerm; 
request(url, function(err, resp, body){ 
    $ = cheerio.load(body); 
    links = $('a'); //jquery get all hyperlinks 
    $(links).each(function(i, link){ 
    console.log($(link).text() + ':\n ' + $(link).attr('href')); 
    }); 
}); 

Bạn chọn bất cứ điều gì là tốt nhất cho bạn.

+5

chúng tôi khuyên bạn nên thay đổi tên của bạn trong: high_speed_answer_right_man :) –

+2

Cảm ơn có thể tôi sẽ làm như vậy. Tôi chỉ cần vượt qua 2000 đại diện;) – user568109

+0

Có anyway để có được kết quả document.links bằng cách sử dụng cổ vũ? – yeya

Các vấn đề liên quan