【问题标题】:Parsehub Selection Node SyntaxParsehub 选择节点语法
【发布时间】:2015-08-16 15:33:23
【问题描述】:

我正在尝试使用 parsehub 从网站中提取数据。使用选择工具,我能够隔离每个部分的标题,但我无法使用 alt-click 取消选择第二个标题行的第一个单元格。选择节点标准会发生变化,但实际选择不会发生变化。 有问题的 HTML 块

    <tr>
    <td width="100%" align="center">
    <table width="493">
    <tr><td></td></tr>
    <tr><td colspan="3">&nbsp;</td></tr>
    <tr bgcolor="#99cc00" height="17">
    <th height="17" colspan="3" title="Scratcher Name"><div align="center"   class="txt_white_bold">LUCKY 7`S #348</div></th>
  </tr>


<tr bgcolor="#99cc00" height="17">
    <th height="17"><div align="center" class="txt_white_bold">Prize Amount</div></th>
    <th align="right"><div align="center" class="txt_white_bold">Prizes Remaining</div></th>
    <th align="right"><div align="center" class="txt_white_bold">Total Prizes</div></th>
  </tr>

选择节点代码如下 选择 1

 {
      "op": "select",
      "tag": "TR",
      "allDescendants": true,
      "flags": [
        {
          "position": 4
        }
      ]
    }

选择 2

{
  "op": "select",
  "tag": "TH",
  "position": 1
}

选择 3

 {
      "op": "select",
      "tag": "DIV",
      "classes": [
        "txt_white_bold"
      ],
      "position": 1
    }

当前输出为

{
"selection1":[
{
"extract1":"LUCKY 7`S #348"
},
{
"extract1":"Prize Amount"
},

等等..我如何只选择“Scratcher Name”而不选择“Prize Amount”?

我的第一个想法是更改“选择 3”以选择 TH 中具有 title="Scratcher Name" 的项目,但我没有成功正确编码。

【问题讨论】:

    标签: javascript node.js html-parsing


    【解决方案1】:

    ParseHub 的学习算法尚未考虑所有属性,因此在某些(相当罕见的)情况下,它不会达到您的预期。在这种情况下,您始终可以使用 css 或 xpath 选择器手动选择所需的元素。

    这样做:

    1. 任意选择
    2. 点击节点详情中的绿色编辑按钮
    3. 删除除一个以外的所有文本区域
    4. 将剩余文本区域中的json替换为

      { "op": "cssSelect", "selector": "th[title='Scratcher Name'] div.txt_white_bold", "allDescendants": true }

    如果您想使用 xpath,也可以使用 xpathSelect。

    【讨论】:

      猜你喜欢
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      相关资源
      最近更新 更多