首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMDocument XPath

DOMDocument XPath
EN

Stack Overflow用户
提问于 2010-09-10 17:49:49
回答 1查看 1.1K关注 0票数 1

谁能向我展示一些例子来导入一个html页面,并使用XPath来查找关键字,包括从div,p,标题等文本的其余部分。

谢谢!

编辑:

在这种情况下,我使用我的网络爬虫,例如,我有一个表单,让网站被抓取和关键字必须在网页中找到。

代码语言:javascript
复制
http://crawler.tmp.remote.nl/example.php

现在它扫描包含关键字的网页,我的问题..我需要建立关键字周围的div区域。

代码语言:javascript
复制
class MyCrawler extends PHPCrawler 
{


  function handlePageData(&$page_data) 
  { // CHECK DOMEIN
  $domain = $_POST['domain'];
  $keywords = $_POST['keywords'];
        //$tags = get_meta_tags($page_data["url"]);
        //$iKeyFound = null;


$find = $keywords;
$str = file_get_contents($page_data["url"]);
if(strpos($str, $find) == true)
{           
    echo $page_data["referer_url"]. ' - gevonden';

    $keywords = $_POST['keywords'];
    if($page_data["header"]){
    echo "<table border='1' >";
    echo "<tr><td width='300'>Status:</td><td width='500'> ".strtok($page_data["header"], "\n")."</td></tr>";}
    else "<table border='1' >";

    // PRINT EERSTE LIJN

    echo "<tr><td>Page requested:</td><td> ".$page_data["url"]."</td></tr>";
    // PRINT STATUS WEBSITE

    // PRINT WEBPAGINA
    echo "<tr><td>Referer-page:</td><td> ".$page_data["referer_url"]."</td></tr>";

    // CONTENT ONTVANGEN?
    if ($page_data["received"]==true)
      echo "<tr><td>Content received: </td><td>".$page_data["bytes_received"] / 8 . " Kbytes</td></tr></table>";
    else
      echo "<tr><td>Content:</td><td> Not received</td></tr></table>";


    $domain = $_POST['domain'];
    $link = mysql_connect('localhost', 'crawler', '--');

    if (!$link) 
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("crawler");
    if(empty($page_data["referer_url"]))
    $page_data["referer_url"] = $page_data["url"];

    strip_tags($str, '<p><b>');
    $matches = $keywords;
    //$match = preg_match_all("'/<(*.?)(*.?)>(*.?)'".$keywords."'(*.?)<\/($1)>/'", $str, $matches, PREG_SET_ORDER);
    //echo $match;



    mysql_query("INSERT INTO crawler (id, domain, url, keywords, data) VALUES ('', '".$page_data["referer_url"]."', '".$page_data["url"]."', '".$keywords."', '".mysql_real_escape_string($str) . "' )");



    echo '<br>';
    echo "<br><br>";
    echo str_pad(" ", 5000); // "Force flush", workaround
    flush();



}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-10 18:16:39

查找包含某些关键字的<div>元素的XPath表达式可以是:

代码语言:javascript
复制
$someKeyword = "foobar";
$xPath = "//text()[contains(., '$someKeyword')]/ancestor::div[1]

要不区分大小写,可以使用translate()

代码语言:javascript
复制
$upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$lower =  strtolower($upper);
$someKeyword = "foobar";
$xPath = "//text()[
            contains(
              translate(., '$upper', '$lower'),
              translate('$someKeyword', '$upper', '$lower')
            )
          ]/ancestor::div[1]";

或者(这在搜索方面会容易得多)在创建DOMDocument之前将整个HTML字符串小写,然后简单地使用第一个XPath表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3683638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档