1

我下载了一些 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>

我想提取 /channel/UCuoJ_C5xNTrdnc4motXPHIA 和 Sabil Muhammad

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

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

谢谢!

4

3 回答 3

0

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

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

于 2012-12-20T18:13:54.673 回答
0

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

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

于 2012-12-20T18:15:35.013 回答
0

您可以使用jQuery通过遍历所有 ' metadata' 类并提取您需要的内容来完成类似的事情:

//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);
    });
});

工作示例

于 2012-12-20T18:15:48.817 回答