【问题标题】:How can I parse this information with DOM Parser or xpath?如何使用 DOM Parser 或 xpath 解析这些信息?
【发布时间】:2013-12-27 08:42:20
【问题描述】:

我想从上面的 URL 中获取一些数据,我想获取搜索查询下的所有种子名称。

http://kickass.to/usearch/grand%20theft%20auto%20v%20category:ps3/

目前我得到了这段代码,但它只是从页面获取 html 源代码,如果有人可以帮助我从源代码中解析所有种子名称,那就太好了。

function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER         => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING       => "",
CURLOPT_USERAGENT      => "spider",
CURLOPT_AUTOREFERER    => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT        => 120,
CURLOPT_MAXREDIRS      => 10,
);

$ch      = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err     = curl_errno( $ch );
$errmsg  = curl_error( $ch );
$header  = curl_getinfo( $ch );
curl_close( $ch );

$header['errno']   = $err;
$header['errmsg']  = $errmsg;
$header['content'] = $content;
return $header;
}

$data =  get_web_page('http://kickass.to/usearch/grand%20theft%20auto%20v%20category:ps3/');
print_r(htmlspecialchars($data['content']));

【问题讨论】:

    标签: html parsing dom xpath


    【解决方案1】:

    需要使用 PHP 吗?

    如果没有,以下 groovy 脚本可以解决您的问题:

    @Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.6')
    
    import groovyx.net.http.*
    import groovy.xml.*
    
    def http = new HTTPBuilder('http://kickass.to/usearch/grand%20theft%20auto%20v%20category:ps3/')
    
    def html = http.get(path: '')
    
    html.'**'.findAll { it.@class == 'torrentname' }.each { torrentNameDiv ->
      def titleLink = torrentNameDiv.'*'.findAll { it.@class.text().contains('normalgrey') }?.getAt(0)
      def title = titleLink.'*'.findAll { it.name() == 'STRONG' && it.@class == 'red' }.join(' ')
      def info = titleLink[0].children().findAll { it instanceof String }.join(' ')
      println "title=$title"
      println "info=$info"
    }
    

    在幕后有像 HTTPBuilder、XmlSlurper 和 GPathResult 这样的 groovy 类。 HTML 结构的导航是通过 GPathResult 完成的。

    这里的文档:

    http://groovy.codehaus.org/api/groovy/util/slurpersupport/GPathResult.html

    http://groovy.codehaus.org/modules/http-builder/home.html

    此处示例:

    http://binarybuffer.com/2012/05/parsing-html-pages-like-a-boss-with-groovy

    【讨论】:

      【解决方案2】:

      除非 html 文档是 xhtml,否则它可能不是格式良好的 XML,您需要 HTML 解析器而不是 XML 解析器……或者您需要使用 W3C 的“ tidy”工具,然后将其解析为XML。

      一旦将它放入标准的 W3C DOM,请检查该 DOM 实现是否提供了 XPath 的实现。如果没有,也可以使用针对用户提供的 DOM 运行的现成的 XPath 实现——Apache Xalan 就是一个明显的例子。 Xalan 还实现了 XSLT,因此您可以将收集数据并将其排列成您想要的格式合并到一个样式表中,而不必手动编写其中的一些代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-14
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        相关资源
        最近更新 更多