刮取网址并检测文本部分

时间:2015-01-21 02:11:30

标签: jquery ajax web-scraping

我想知道是否可以抓取特定网址并检测其中的所有文字部分。

更具体地说,我想抓一篇文章,找到标题,副标题(如果存在)和内容。我知道在大多数文章中会有其他噪音内容,就像其他建议的标题一样,但我会想出将来如何解决它。现在,我只想问如何刮一个网址。 通过阅读其他Stack Overflow问题,我发现我可以使用ajax和jQuery来实现它(就像下面的一小段代码,我知道这是没有意义的),但我不确定我脑子里清楚了所有的段落。

$.ajax({
    url: "/thePageToScrape.html",
    dataType: 'text',
});

2 个答案:

答案 0 :(得分:0)

如果它是同源的,您可以使用JQuery $.get

$.get("http://www.yourDomain.com/page=yourArticle", function (data) {
var title = $(data).find("#title").text();
});

如果文章的标题位于id =“title”的div中。

答案 1 :(得分:0)

这是一个很大的主题,通过在服务器端实现更好的结果 - 但仍然是一个简单的例子:

我们想要这个页面:var url = "http://someurl.com/scrapme1.html"; 我们希望其内容看起来像这样:

<html>
    <head>
    ....
    </head>
<body>
      <h4 class='page-title'>
          I'm an article title
      </h4>
      <div class='summary'>
          ...
      </div>
      <div id="article_body">
          ...
      </div>
</body>
</html>

现在我们需要标题(h4.page-title),摘要(div.summary)和文章内容(div#article_body)。

我们可以将页面加载到jQuery元素中:

function getContent(url){
    var content = null;
    $.get('http://wwcshare/icenter/Pages/wwcMenuContent.aspx', 
        function(data) {
            var $dom = $(data); 
            var title = $dom.find("h4.page-title");
            var summary = $dom.find("div.summary");
            var article_body = $dom.find("div#article_body");
            //Do whatever you need....
        }
}

更重要的注意事项

  1. 显然,您需要确保正确返回预期的数据。
  2. 您也可以使用$.post(), .load(), .ajax(),甚至可以添加一些POST变量。
  3. 页面可能具有受限制的原始策略,因此您的请求可能会失败。
  4. 您可以使用一些正则表达式模式动态检测和合成某些键值 - 例如发布日期,作者姓名等。
  5. 您始终需要对源有很好的了解并使用其元素选择器来更好,更快地提取相关内容。
  6. 享受。