#jquery #node.js #web-scraping #screen-scraping #cheerio
#jquery #node.js #очистка веб-страниц #очистка экрана #cheerio
Вопрос:
Я пишу скребок для получения файлов psp iso для загрузки на основе рейтинга. Мне сложно ориентироваться на каждый рейтинг. Как я могу захватить этот элемент? Я включил снимок для справки. Элемент рейтинга находится внутри tr td
тега.
var request = require('request'),
cheerio = require('cheerio'),
fs = require('fs');
var url = 'http://goo.gl/cc4HRc',
pspGames = [];
request(url, function (error, response, html) {
if (!error amp;amp; response.statusCode === 200) {
var $ = cheerio.load(html);
$('.gamelist', 'td').each(function () {
var links = $(this).attr('href');
pspGames.push(links);
});
}
});
Ответ №1:
Глядя на ссылку, это выглядит так:
<tr>
<td>
<a class="index gamelist" title="Corpse Party - Book of Shadows (Japan) ISO Info and Download" href="/Sony_Playstation_Portable_ISOs/Corpse_Party_-_Book_of_Shadows_(Japan)/158702">Corpse Party - Book of Shadows (Japan)</a>
</td>
<td align="center">4.9504</td>
</tr>
Вы должны просто сделать: $('.gamelist').each(
Комментарии:
1. Я был немного зациклен на том, был ли мой выбор правильным. Как я могу инкапсулировать этот рейтинг 4.9504? Является ли это атрибутом?
2. $(this).parents(‘tr’).find(‘td’).last().html()
3. Я бы никогда этого не понял. Я читал документы и не смог найти ничего похожего на этот случай. Для дальнейшего использования, как вы до этого додумались? Кстати, я ценю вашу помощь. Кроме того, почему вы просто выбрали цель
gamelist
вместо.gamelist, td
.4. jQuery 🙂 Просто подумайте о дереве DOM, родителях, поиске, последнем, все относится к тому, где вы находитесь в данный момент. Прочитайте о селекторах jQuery, и в следующий раз будет проще.
5. Боже, я надеюсь на это. В следующий раз ты будешь мной гордиться! ха-ха
Ответ №2:
Я не уверен, как вы собирались сохранить рейтинг, но, возможно, что-то вроде этого поможет:
$('.gamelist').each(function () {
var link = $(this.attr('href'));
var rating = $(this).parent().siblings().first().text();
pspGames.push({"link": link, "rating": rating});
});
Комментарии:
1. Чаще всего мне приходится использовать хэш, синтаксический анализ с плавающей запятой и писать условие, чтобы проверить, превышает ли оно определенный рейтинг, а затем добавить. Мне нужно прочитать о parent() . Отлично сделано!