私はNode.jsとリクエストモジュールとcheerioモジュールを使って、かなり単純なWebスクレイパーを書いています。私は、ページごとに単一のURLで複数回戻されていた画像のURLをこすりしようとするとNode.jsのWebスクレイピングに関する問題|リクエスト| cheerio
- :私はそれをしたいと 私のコードは、2つの理由のために動作しません。 各「HREF」と「タイトル」の反復は(それは毎回同じ順序であるがため、例えば1、2、3等のままではない)ここ
一見ランダムな順序で行わ
var request = require('request'),
cheerio = require('cheerio');
var sqlite3 = require('sqlite3').verbose();
var database = "storage.db"
console.log('[+] Creating database: ' + database);
var db = new sqlite3.Database(database);
var pw_url = "https://primewire.unblocked.ink"
console.log('[+] Creating table with rows...');
db.serialize(function() {
db.run("CREATE TABLE IF NOT EXISTS main (title TEXT, film_page_links TEXT, img_url TEXT)");
});
var img_urls = {}
function iter_pages(page_number) {
request(pw_url + '/index.php?sort=featured&page=' + page_number, function(err, resp, body) {
if(!err && resp.statusCode == 200) {
console.log('[+] The request response status code is: ' + resp.statusCode);
var $ = cheerio.load(body);
console.log('[+] Inserting values into database.');
$('.index_item a img', '.index_container').each(function() {
img_urls.img_url = $(this).attr('src');
});
$('.index_item a', '.index_container').each(function() {
var url = $(this).attr('href');
var title = $(this).attr('title');
if(url.startsWith('/watch-')) {
//urls.push('https://primewire.unblocked.ink' + url);
db.run("INSERT INTO main (title, film_page_links, img_url) VALUES (?, ?, ?)",
title.replace("Watch ", ""),
pw_url + url,
"https:" + img_urls.img_url);
};
});
console.log('[+] Processed page:' + page_number);
}
});
}
for (var i = 1; i < 5; i++) {
iter_pages(i);
}
私はconsole.logです:
[+] Creating database: storage.db
[+] Creating table with rows...
[+] The request response status code is: 200
[+] Inserting values into database.
[+] Processed page:4
[+] The request response status code is: 200
[+] Inserting values into database.
[+] Processed page:1
[+] The request response status code is: 200
[+] Inserting values into database.
[+] Processed page:3
[+] The request response status code is: 200
[+] Inserting values into database.
[+] Processed page:2
あなたはそれが私を混乱させるため4、1、3、2に行く見ることができるように私のコードです。
返される画像URLは、常に各ページの21番目の項目です。
私はJavaScriptには新しいので、親切にしてください。私はメソッドを移動して、コードを破棄したり同じことを返すiter_pages関数内でイメージURLを取得しようとしました。
さらに進んだチュートリアルへのリンクでも十分ですが、私は非常に早いことを学びますが、私が見つけたすべてのチュートリアルは非常に基本的なテクニックです。
うわー、ありがとう、ファリッド、問題1解決 - 素晴らしい!私は '$( 'img'、this)'のような方法でimgタグを取得するのを知らなかった。あなたのアドバイスをもとに問題2を修正します。これは決して選ばれた答えです。 –