【问题标题】:Which to use? file_get_contents, file_get_html, or cURL? [closed]使用哪个? file_get_contents、file_get_html 还是 cURL? [关闭]
【发布时间】:2014-08-25 07:49:06
【问题描述】:

我需要从网页上的表格中抓取数据。然后我想将这些数据存储在一个数组中,以便以后可以将其存储在数据库中。我对这个功能很不熟悉,所以我想用最简单的方法。

我应该使用哪个? file_get_contents, file_get_html, cURL?

【问题讨论】:

  • 你不会找到一个关于你的问题的绝对教程,你会找到很多关于各个方面的教程并将它们放在一起
  • 有一些 api 可以提供您正在寻找的数据,这比屏幕抓取要容易得多。

标签: php curl file-get-contents simple-html-dom


【解决方案1】:
  1. 您可以使用curl()file_get_contents()获取页面内容。
  2. 然后,使用正则表达式提取您需要的内容 (preg_match())
  3. 最后,将内容插入数据库。

您可以使用 crontab 命令(Linux: crontab -e) 使 php 脚本自动执行。

我的英语很差,所以希望有人给我意见。谢谢!

【讨论】:

    【解决方案2】:

    我更喜欢 PHP Simple HTML Dom Parser:

    http://simplehtmldom.sourceforge.net/
    

    然后您可以使用它们的语法遍历某些元素。例如,要获取您发送过来的链接上所有团队的名称,将其保存到数组中,然后执行 MySQL 插入语句,您可以执行以下操作:

    $html = file_get_html('http://www.tablesleague.com/england/');
    
    $name_array = array();
    
    // Get all names
    foreach($html->find('div.cell.name.no_border') as $element){ 
        //Push the name to an array
        array_push($name_array, $element->innertext);
    }
    

    然后准备一条 MySQL 语句:

    foreach($name_array as $name){
        $sql = "INSERT INTO table_name (name) VALUES ($name)";
        $result = $mysqli->query($sql);
    }
    

    您始终可以创建一个包含您想要的所有元素的多维数组,在循环遍历数组时将它们从数组中拉出,并为每个查询上传多个项目。

    【讨论】:

    • 这看起来可以满足我的需求。但是我如何准确地找出每个元素在它们的语法中被称为什么? 'div.cell.name.no_border' 是从哪里来的?
    • 使用浏览器中的检查器查看 HTML 源代码(在 Chrome 或 Firefox 中,只需右键单击或按住 Ctrl 键单击 Mac,然后选择“检查元素”)。这需要一些基本的 HTML 知识,但我会说这是我见过的最简单的网站抓取方式。
    猜你喜欢
    • 2010-10-12
    • 2013-02-04
    • 2014-11-16
    • 2012-10-06
    • 2011-08-08
    • 2021-06-09
    • 2012-02-20
    • 2011-03-05
    相关资源
    最近更新 更多