当前位置: 首页 > 面试题库 >

PHP中的Web抓取

林绪
2023-03-14
问题内容

我正在寻找一种方法,可以根据用户在PHP中提供的URL对另一个页面进行小的预览。

我只想检索页面标题,图像(如网站徽标)以及一些文字或说明(如果有)。有没有任何外部库/类的简单方法?谢谢

到目前为止,我已经尝试过使用DOCDocument类,加载HTML并将其显示在屏幕上,但是我认为这不是正确的方法


问题答案:

我建议您考虑为此使用simple_html_dom。这将使其非常容易。

这是一个如何提取标题和第一张图片的有效示例。

<?php
require 'simple_html_dom.php';

$html = file_get_html('http://www.google.com/');
$title = $html->find('title', 0);
$image = $html->find('img', 0);

echo $title->plaintext."<br>\n";
echo $image->src;
?>

这是第二个示例,无需外部库即可执行相同操作。我应该注意,在HTML上使用正则表达式不是一个好主意。

<?php
$data = file_get_contents('http://www.google.com/');

preg_match('/<title>([^<]+)<\/title>/i', $data, $matches);
$title = $matches[1];

preg_match('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $data, $matches);
$img = $matches[1];

echo $title."<br>\n";
echo $img;
?>


 类似资料:
  • 问题内容: 我一直在使用正则表达式在PHP中进行HTML抓取。这是可行的,但结果是挑剔和脆弱的。有没有人使用过提供更强大解决方案的软件包?配置驱动的解决方案将是理想的选择,但我并不挑剔。 问题答案: 从页面抓取HTML后,我将推荐PHP简单HTMLDOM解析器。它支持无效的HTML,并提供了一种非常简单的方法来处理HTML元素。

  • 问题内容: 我正在做一个项目,我需要做很多屏幕抓取工作,以尽可能快地获取大量数据。我想知道是否有人知道任何好的API或资源来帮助我。 顺便说一下,我正在使用Java。 到目前为止,这是我的工作流程: 连接到网站(使用来自Apache的HTTPComponents) 网站包含一个带有一堆我需要访问的链接的部分(使用内置的Java HTML解析器来弄清楚我需要访问的所有链接是什么,这很烦人且凌乱的代码

  • 正如标题所示,我正在尝试使用Selenium从网站(示例)中获取一些数据,但是我在从Pro结果表中获取隐藏在每一行中的数据时遇到了问题,即单击Show Details按钮()时显示的数据。 这是我的代码: 正如您所看到的,我可以很容易地获取表中的行,但是当我试图获取隐藏数据时,我就是找不到获取它的方法。 我对Selenium也不是很熟悉,所以欢迎提供任何指导。

  • 问题内容: 我想编写一个vba程序,该程序可以从网页自动下载历史库存数据。选择数据并单击下载按钮已在起作用。但是我也想更改日期,不适用于我的代码。 我想更改日期的Element的相应HTML代码,您可以在以下链接下找到该日期: 我要更改日期的元素的HTML代码 我现在使用的代码如下: 我非常感谢您的帮助! 问题答案: 请尝试以下方法。实际上,它单击年份和月份的下拉菜单,然后通过属性值选择适当的项目

  • 我一直在尝试从Dealabs网站上执行一些web抓取。 下面是示例页面: https://www.dealabs.com/bons-plans/saneo-climatiseur-2166879 主要目标是能够获得所有评论并打印出来。 示例代码如下: 事实上,通过这样做,我只能收集最受好评的评论,而不是所有评论。 我有点困惑。 我是不是漏了什么? 提前感谢

  • 代码在这里运行正常。 执行这些行时弹出错误。错误截图1 错误截图2