从html页面中提取元素

时间:2012-12-20 18:10:26

标签: html xml phantomjs scrape

我下载了一些youtube评论页面,我想提取用户名(或用户显示名称) 和链接 比如下面的代码块:

 <p class="metadata">
      <span class="author ">
        <a href="/channel/UCuoJ_C5xNTrdnc4motXPHIA" class="yt-uix-sessionlink yt-user-name " data-sessionlink="ei=CKG174zFqbQCFZmaIQodtmyE0A%3D%3D" dir="ltr">Sabil Muhammad</a>
      </span>
        <span class="time" dir="ltr">
          <a dir="ltr" href="http://www.youtube.com/comment?lc=S2ZH2gSPYaef43vTRkLDxUzo2fYicVUc3SFvmYq2jrs">
            il y a 1 jour
          </a>
        </span>
    </p>

我想提取     /信道/ UCuoJ_C5xNTrdnc4motXPHIA 和     Sabil Muhammad

html页面当然有很多行,但我只想关注上面的代码块并提取所有用户名和相应的链接,并将它们放入日志文件中

这有什么好的脚本吗? 我知道bash和c / c ++

谢谢!

3 个答案:

答案 0 :(得分:0)

如果你使用jQuery,那很容易。但是,如果您使用bash或c / c ++进行操作,则需要检索页面内容并解析您感兴趣的元素。您可以将元素视为XML并相当容易地解析属性。 / p>

您可以使用正则表达式或与子字符串匹配的简单文本。

答案 1 :(得分:0)

使用awk(如果你擅长bash)你可以逐行阅读页面并设置过滤器来捕捉<p class="metadata">并开始复制并结束复制,如果你面对</p>

然后处理提取的部分,依此类推......

答案 2 :(得分:0)

您可以通过遍历所有“metadata”类并提取所需内容来使用jQuery来完成此类操作:

//After including jQuery within your page
$(document).ready(function()
{
    //Iterates through each of the metadata tags
    $('.metadata').each(function()
    {
          //Pulls the username
          var username = $('.yt-user-name', this).text();
          //Pulls the link
          var link = $('.time a', this).attr('href');
          //Process each accordingly
          alert(username + ':' + link);
    });
});

<强> Working Example