javascript - 使用 jQuery 进行简单的屏幕抓取

标签 javascript jquery screen-scraping

我一直在考虑使用 jQuery 使用简单的屏幕抓取工具,我想知道以下是否可行。

我有一个简单的 HTML 页面,并且正在尝试(如果可能的话)从另一个页面获取所有列表项的内容,如下所示:

主页:

<!-- jQuery -->
<script type='text/javascript'>
$(document).ready(function(){
$.getJSON("[URL to other page]",
  function(data){

    //Iterate through the <li> inside of the URL's data
    $.each(data.items, function(item){
      $("<li/>").value().appendTo("#data");
    });

  });
});
</script>

<!-- HTML -->
<html>
    <body>
       <div id='data'></div>
    </body>
</html>

其他页面:

//Html
<body>
    <p><b>Items to Scrape</b></p>   
    <ul>
        <li>I want to scrape what is here</li>
        <li>and what is here</li>
        <li>and here as well</li>
        <li>and append it in the main page</li>
    </ul>
</body>

那么,是否可以使用 jQuery 从外部页面中提取所有列表项内容并将它们附加到 div 中?

最佳答案

使用$.ajax 将另一个页面加载到一个变量中,然后创建一个临时元素并使用.html() 将内容设置为返回值。遍历 nodeType 1 元素的子元素并保留其第一个子元素的 nodeValues。如果外部页面不在您的网络服务器上,您将需要使用您自己的网络服务器代理该文件。

像这样:

$.ajax({
     url: "/thePageToScrape.html",
     dataType: 'text',
     success: function(data) {
          var elements = $("<div>").html(data)[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
          for(var i = 0; i < elements.length; i++) {
               var theText = elements[i].firstChild.nodeValue;
               // Do something here
          }
     }
});

关于javascript - 使用 jQuery 进行简单的屏幕抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667880/

相关文章:

javascript - 将字符串列表传递给 mvc 3 Razor 中的 Controller

javascript - Tabletop.js 看不到 Google 电子表格数据

javascript - 是否可以将 html、css、js 等添加到 Go 服务器?

javascript - 创建简单的打字效果

php - 定时自动注销和浏览器关闭

java - 使用 Jsoup 进行屏幕抓取来提取句子

使用 _.extend() 的 JavaScript 继承

jquery - 如果在浏览器中输入了某个单词,如何使用 JQuery 检查?

python - 使用美汤蟒刮痧

python - 使用查询抓取网页