javascript - 如何使用 Jquery 从其他网站的抓取 HTML 代码中选择所有 div?

标签 javascript jquery twitter-bootstrap google-chrome parsing

我正在开发一个 chrome 扩展程序,然后调用一个 XMLHttpRequest另一个网站 获取数据并将其存储在一个变量中稍后使用 Jquery 进行解析。

我在变量 parseText 变量中得到了整个 html 源代码。

主要问题是在 parseText 变量中找到所有具有特定类名的 div,然后依次循环并将数据填充到 popup.html 中。

你能帮我解析 html 数据并使用特定的类名提取 div 吗?

我的代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="css/bootstrap.min.css" media="screen" title="no title" charset="utf-8">
        <title>Youtube Chrome Extenstion</title>

    </head>
    <body>
        <div class="container">
          <h4>Hello Cricbuzz</h4>
          <div class="" id="y">

          </div>
        </div>


        <!-- Main functionality js  -->
        <!-- <script src="scripts/main.js" charset="utf-8"></script> -->

        <script src="scripts/loadapi.js" charset="utf-8"></script>

        <!-- Jquery Required for bootstrap -->
        <script src="scripts/jquery.js" charset="utf-8"></script>
        <!-- bootstrap Javascript -->
        <script src="scripts/bootstrap.min.js" charset="utf-8"></script>
    </body>
</html>

LoadApi.js 文件代码在这里。它的主要功能是从特定站点获取数据,然后将其存储在变量中。

console.log("Hello api call");

var xhr= new XMLHttpRequest();
xhr.open('GET', 'http://www.cricbuzz.com/cricket-match/live-scores', true);
xhr.onreadystatechange= function() {
    if (this.readyState!==4) return;
    if (this.status!==200) return; // or whatever error handling you want
    //document.getElementById('y').innerHTML= this.responseText;
    //console.log(this.responseText);

    var $parseText = this.responseText;
    //console.log($parseText);
    //PROBLEM HERE HOW TO FIND ALL DIVS USING CLASS NAME BELOW
    $parseText.find(".cb-col.cb-col-100.cb-lv-main")

};
xhr.send();

list .json

"content_scripts": [{
        "matches": ["http://www.cricbuzz.com/"],
        "js": ["scripts/jquery.js", "scripts/main.js"]
    }, {
        "matches": ["http://*/* " , "https://*/*"   ],
        "js": ["scripts/loadapi.js"]
    }],
    "permissions": [
        "activeTab",
        "tabs"
    ],
    "icons": {
        "16": "images/icon_16.png",
        "48": "images/icon_48.png",
        "128": "images/icon_128.png"
    },

    "browser_action": {
        "default_icon": "images/icon_128.png",
        "default_popup": "popup.html"
    }
}

预期输出: enter image description here

在这一点上受到打击: enter image description here

最佳答案

获取这样的数据确实不切实际,但如果必须的话

<script>
var uglyText  = "<div class='tofind'>good data</div><div class='noneed'>bad data</div><div class='tofind'>good data</div><div class='noneed'>bad data</div><div class='tofind'>good data</div><div class='noneed'>bad data</div>";

var lessThanUglyText = uglyText.split('<div'); // Split based on divs

var goodData = [];
var goodDataCount = 0;


for(var i = 0; i < lessThanUglyText.length; i++)
{
    if(lessThanUglyText[i].indexOf('tofind') == -1) // doesn't have class we want
    continue;
    goodData[goodDataCount] = lessThanUglyText[i].replace('</div>', ''); // trim the end
    goodDataCount++;    
}

for(var i = 0; i < goodData.length; i++)
{
    goodData[i] = goodData[i].substring(goodData[i].indexOf(">") + 1); // get what's inside the divs

}
</script>;

注意:这假定您要查找的类不能显示为普通文本,并且彼此之间没有嵌套 div,并且没有 > 内部数据。有很多限制,但这是一个通用的解决方案。

关于javascript - 如何使用 Jquery 从其他网站的抓取 HTML 代码中选择所有 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639182/

相关文章:

css - 将固定文本放入图像中 - 使用 Bootstrap 进行响应

javascript - 如何使用 Angular js在文本框上显示日期日历?

javascript - 使用 Jquery 从侧面弹出一个 div。

javascript - react : What's the purpose of checking if a prop is a function to execute it then?

jquery - 如何使用 JQuery 选择器选择 HTML Dom 中的特定子节点?

c# - 使用 jquery、ajax 和 asp.net 的评论框?

javascript - 表单发布返回文件时显示 'wait' 光标

javascript - 基于 scroll React JS 的 Toggle 类

javascript - JavaScript递归循环从嵌套数组求和所有整数

javascript - jQuery:切换任何下拉菜单时切换其他下拉菜单