如何刮掉"模糊"网站上的信息?

时间:2016-03-12 23:25:27

标签: javascript php html regex web-scraping

我试图制作一个" API"对于我不拥有的网站,并尝试从页面中删除信息,但是我已经尝试过关于stackoverflow和其他有关DOM和正则表达式的位置的建议,这通常需要一个上下文或特定的div标签,看来这个网站没有使用,只使用通用网站,有没有办法可以从网站上删除信息?

HTML我试图抓住的一些例子:

<div class="col-md-6">
 <strong style="font-weight:500;">Date Created</strong>
</div>
<div class="col-md-6">
  03-12-2016 4:08PM
div>

<div class="col-xs-6 col-md-2 text-center">
  <font style="font-size:22px;">
    Feb 12, 2016
  </font>
   <br />
<div style="color:#999;">join date</div>
</div>

我如何能够抓取创建日期(实际日期)和加入日期?我在网络编程方面不是那么先进,所以我找不到任何其他内容,我通常只使用PHP。

2 个答案:

答案 0 :(得分:1)

你的样本很差,所以这只是一个展示道路的例子。

基于此HTML示例:

<html>
    <head><title>Test</title></head>
    <body>
        <div class="col-md-6">
            <strong style="font-weight:500;">Date Created</strong>
        </div>
        <div class="col-md-6">
            03-12-2016 4:08PM
        </div>
        <div class="col-xs-6 col-md-2 text-center">
            <font style="font-size:22px;">
            Feb 12, 2016
            </font>
            <br />
            <div style="color:#999;">join date</div>
        </div>
    </body>
</html>

我们使用DOMDocumentDOMXPath

$dom = new DOMDocument();
libxml_use_internal_errors( 1 );
$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );

然后我们搜索加入日期的正确路径:

$nodes = $xpath->query( '//div[@class="col-xs-6 col-md-2 text-center"]/div[.="join date"]/preceding-sibling::font' );

我们输出其节点值:

echo trim( $nodes->item(0)->nodeValue );

结果:

  

2016年2月12日

XPath是一种使用短语法处理XML / HTML文档部分的语言,用于复杂搜索。

上述路径意味着:

//                                           Following pattern no matter where they are in the document
div[@class="col-xs-6 col-md-2 text-center"]  <div> with class "col-xs-6 col-md-2 text-center"
/div[.="join date"]                          <div> with “join date” as node value
/preceding-sibling::font                     preceding sibling with tag <font>

因此,您必须在HTML中搜索最佳的独特模式,以隔离所需的节点并编写适当的模式以匹配它。

答案 1 :(得分:0)

如果您想要抓取的数据没有明显一致的格式,那就不容易了。你需要某种聪明才能找到日期,也许文本“加入日期”在距日期文本n个字符的距离内(所以你可以假设它是相关的,因此你有他们的加入日期)。

制作可靠的工具并不容易。