jquery - 如何编写 HTML 结构的 Cheerio 查询?

标签 jquery node.js web-scraping cheerio

我的cheerio代码片段如下。我正在尝试获取 <td> 中的项目名称标签,并抓取后续 td 标签内的数字 (1,2,1)。

itemName 查询有效,但 startPrice、endPrice 和 diffPrice 查询无效。我的逻辑哪里有缺陷,或者是语法错误?

var $ = cheerio.load(html);

//
$('.table-item-link').each(function(i, element) {
    var itemName = ($(this).attr('title');
    console.log(itemName);
});

//Iterate through all tr inside div = 'content'
$('.content tr').each(function(i, element) {
    var startPrice = $(this).children()[2].children()[0].text();
    var endPrice = $(this).children()[3].children()[0].text();
    var difPrice = $(this).children()[4].children()[0].text();
    console.log(price)
});
<div class='content'>
    <table>
        <thead>
             <tr>Table Title</tr>
             <tbody>
               <tr>
                 <td>
                   <a href="http://services.runescape.com/m=itemdb_rs/Jangerberry_seed/viewitem?obj=5104" title="Jangerberry seed" class='table-item-link'>
												<img src='http://services.runescape.com/m=itemdb_rs/5125_obj_sprite.gif?id=5104' alt="Jangerberry seed"><span>Jangerberry seed</span>
											</a>
                   </td>
                 <td class='memberItem'><img src='http://www.runescape.com/img/rs3/grand_exchange/tick.png' title="Members Only" alt="Yes" /></td>
											<td><a href="http://services.runescape.com/m=itemdb_rs/Oak_toy_box/viewitem?obj=9849">1</a></td>
											<td><a href="http://services.runescape.com/m=itemdb_rs/Oak_toy_box/viewitem?obj=9849">2</a></td>
											<td><a href="http://services.runescape.com/m=itemdb_rs/Oak_toy_box/viewitem?obj=9849">1</a></td>
													<td class='change positive'><a href="http://services.runescape.com/m=itemdb_rs/Oak_toy_box/viewitem?obj=9849">+100%</a></td>
									</tr>
               <****repeat a bunch of tr w/ same format as above****>
               <****close all other tags****************************>
           

最佳答案

好的,我检查了您的代码。为什么不直接选择

var arr = [];
$(".content tr a").each(function (i, elem) {
  var a = $(elem);
  var text = a.text().trim().toLowerCase();
  arr.push(text);
});

您还可以按 i 值进行过滤,例如 if i !== 2, i !== 3

关于jquery - 如何编写 HTML 结构的 Cheerio 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952676/

相关文章:

jquery - 如何使用 Jquery 重置不透明度/动画。包含 jsfiddle

javascript - 元素的绝对定位问题

javascript - Mongoose 保存一对多

html - 当我找不到 <img> 标签时,如何从网站获取图片?

javascript - 索引或大小为负,或大于允许值。

jquery - 将一些对象添加到父级,它是具有相似 ID 的 DIV 之一

node.js - Mongoose 的全文搜索不起作用

node.js 与meteor.js 有什么区别?

python - 构建WebScraper时出错: TypeError: 'NoneType' object has no attribute '__getitem__'

VBA 函数 IFERROR 然后转到第 X 行