用于从棘手的网站中抓取/解析数据的css选择器代码

时间:2016-03-06 13:03:26

标签: javascript node.js parsing web-scraping css-selectors

我很难开发出足够的“CSS选择器”代码来刮取/解析以下HTML的几率。我对node.js比较新。但我过去成功地删除了类似的网站。不幸的是,这个网站有点棘手(对我来说无论如何!)。我可以告诉问题必须是我使用的CSS选择器代码。你能告诉我如何编写一个允许我从...中获取赔率11/2的代码。

<div class="market"..............>
   <header class=..........>
   <div class="market-content">
      <div class ="selection">
          <div class="selection name" data-  bind="html:selection.getTitle()"> Aston Villa </div>
          <selection-button params="....>
             <div>
               <div class="odds-button"..........>
                 <span class="price">
                   <span class="odds-convert"......> 11/2 </span>

2 个答案:

答案 0 :(得分:0)

很难说只是那段HTML,但为此(使用jQuery):

$('.odds-button > . price > .odds-convert').text();

当然,选择器也可能与其他地方匹配,然后您必须通过包含更长的路径来使其更具体。但是,如果HTML的结构发生变化,那么从get get开始过于具体化会使它过于脆弱。

答案 1 :(得分:0)

我不确切地知道你是如何抓取Node.js中的内容,你正在使用哪些库或技术,但这就是我在客户端做的方式:

var oddsElement = document.querySelector([
        ".market",
        ".market-content",
        ".selection",
        // obviously, change below to match your data attribute
        ".selection.name[data-SOME_KEY=\"SOME_VALUE\"]",
        ".odds-button",
        "span.price",
        "span.odds-convert"
    ].join(" "));

if (typeof oddsElement === "object") {
    var odds = (oddsElement.textContent || oddsElement.innerText);
    // or could use "let" keyword in strict-mode Node.js for block-scope
} else { // no match
    console.warn("Odds cannot be found.");
}