0
私はロードボタンを押してウェブサイトをスクラップしようとしていますが、悪夢の中で再帰機能を実行することはできません。もし、あなたがテーブル内のデータをスクラップしたい場合は、この方法または任意の他のアイデア「詳細を読み込む」ボタンをクリックしてスクレープJS
私はロードボタンを押してウェブサイトをスクラップしようとしていますが、悪夢の中で再帰機能を実行することはできません。もし、あなたがテーブル内のデータをスクラップしたい場合は、この方法または任意の他のアイデア「詳細を読み込む」ボタンをクリックしてスクレープJS
ことによってそれを行うにはどのような方法を持っている場合、私は知らない
const Nightmare = require('nightmare');
const nightmare = Nightmare({
show:true
});// }
const request = require('request');
const cheerio = require('cheerio');
let url = 'https://www.housers.com/es/proyectos/avanzado';
let propertyArray = [];
var getThePage = function() {
nightmare
.goto('https://www.housers.com/es/proyectos/avanzado')
.wait(1500)
.click('#loadMore')
.evaluate(() =>{
return document.querySelector('.all-info').innerHTML;
})
.end()
.then((result) => {
let $ = cheerio.load(result);
let loadMore = $('#loadMore')
if (loadMore) {
getThePage();
}
return result
})
.catch((error) => {
console.error('Search failed:', error);
});
}
getThePage()
:私のコードは次のようなものです悪夢を使う必要はありません。ネットワークタブから、あなたはそれがこのエンドポイントを呼び出すことがわかります。
https://www.housers.com/es/proyectos/avanzado/scroll
いくつかの改ページ&ページサイズで、のは(それが限界値を超えるかどうかわからない)ページごとに200を見てみましょう。助けのための
const axios = require('axios');
const querystring = require('querystring');
const cheerio = require('cheerio');
const entities = require("entities");
const url = 'https://www.housers.com/es/proyectos/avanzado/scroll';
const prices = [];
function doRequest(url, page){
return axios.post(url + '?page=' + page + '&size=200', querystring.stringify({
word: "",
country: "",
type: "",
order: "STOCK_PRICE_VARIATION",
orderDirection: "DESC"
}));
}
async function getPrices() {
var empty = false;
var page = 0;
while (!empty) {
//call API
console.log("GET page n°" + page);
var res = await doRequest(url, page);
page++;
//parse HTML
const $ = cheerio.load(res.data,{
xmlMode: true,
normalizeWhitespace: true,
decodeEntities: true
});
if (res.data.trim() !== ""){
//extract prices : put it in array
$('tr').map(function(){
var obj = [];
$(this).children('td').map(function(){
obj.push(entities.decodeHTML($(this).text().trim()));
});
prices.push(obj);
});
}
else {
empty = true;
}
}
console.log(prices);
console.log("total length : " + prices.length);
}
getPrices();
ありがとう:
次に、あなただけのhtmlに、アレイ内の&プットデータを解析する必要があります。もっと明確にするために、ブラウザとネットワーク "dev bar"の中を調べました。そして、Webサイトへのリクエストを確認することができます。それが無限のスクロールまたはより多くのボタンをロードしても、ドメインへの呼び出しを示すので、セレクタを探す必要はありません。 –