【问题标题】:How do extract urls from this page如何从该页面中提取 url
【发布时间】:2011-08-02 09:01:47
【问题描述】:

我正在尝试使用 curl 从网络获取一些数据。我有一个像somewebsite.com 这样的网址。在这个网站上,有一大堆 <divs> 有一个 class="control-element" 并且有这个标记:

<div class="control-element">
   <a href="http://someurl.com/and/some/path">Anchor Text</a>
</div>

我应该如何提取每个链接的 url 和锚文本?我应该为此使用正则表达式吗?或者最好的方法是什么?

【问题讨论】:

    标签: php regex parsing html-parsing


    【解决方案1】:

    我认为在这种特殊情况下,您可以使用 file_get_contents() 而不是 cURL

    对于 html 解析,请查看 Simple HTML DOM

    如果您不想使用任何 3-rd 方库,这里是一个使用正则表达式的示例:

    $doc = file_get_contents("http://someurl.com/");
    preg_match_all('/<div class="control-element">(.*)<\/div>/isU', $doc, $matches);
    $co = count($matches[1]);
    for($i = 0; $i<$co;$i++)
    {
        preg_match_all('/<a href="(.*)">(.*)<\/a>/isU', $matches[1][$i], $matches2);
        echo("URL: ".$matches2[1][0]." Anchor: ".$matches2[2][0]."<br>");
    }
    

    【讨论】:

    • 我不确定是否要为此安装和使用外部库。
    • file_get_contents() 不是外部库,请单击 develroot 发布的链接。这是一个原生 PHP 函数。
    • 我编辑了我的帖子并添加了一个仅使用 php 内置函数的示例。检查
    • 如果您想使用 CURL,请参阅 php.net/manual/en/ref.curl.php .. 您无法获得更好的文档。但是如果你没有在 phpinfo() 中看到它,你可能需要在你的 PHP.ini 文件中启用、取消注释它。
    • @develroot,非常感谢你。这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多