Webcrawler提取链接元素

时间:2018-07-01 20:16:10

标签: php web-crawler php-7.2

我想从网页中提取元素。

$html = file_get_contents($link);

该函数返回完整的html文件,我只希望内部和外部链接将它们保存在数据库中。

$sql = "INSERT INTO prueba (link, title, description) VALUES (?, ?, ?)";

//preparando los datos
$query = $pdo->prepare($sql);

//orden de ejecucion
$result = $query->execute([
  $link,
  $title_out,
  $description
]);

在这里,我已经设法提取描述和标题,并且设法将它们放置在数据库中,但是我想提取所有外部和内部链接。一列中的内部链接,另一列中的外部链接。我已经在数据库中创建了这两列。

2 个答案:

答案 0 :(得分:0)

我建议使用DOM-Parser库,例如:

解析HTML,然后仅“查询”所有锚点(this.updateCart(1, {quantity: 2}); 标签)。

例如,与尝试使用正则表达式自己提取它们相比,容易出错的可能性要小得多。

答案 1 :(得分:0)

HTML抓取

为此,我建议您使用提供帮助功能的开源库来导航到DOM。没有这个,您将不得不维护更多的代码。如果要管理对多个页面的抓取,则每次页面更新时都必须更新正则表达式查询。

你不想要那个^^'

Goutte”库中的一个示例(希望您使用的是+ PHP 5.5)

$links = [];
$crawler->filter('a')->each(function ($node) {
    var_dump($node->attr('href'));
    $links[] = $node->attr('href');
});

$links现在包含页面中属性中的所有链接

有关节点移动的更多示例,请参见this link

使用数据库逻辑来持久存储此数据

很抱歉,如果Goutte的代码有错误,我不会经常使用它