【问题标题】:How do I get text from a website using PHP?如何使用 PHP 从网站获取文本?
【发布时间】:2011-07-18 03:45:15
【问题描述】:

所以,我正在编写一个 PHP 脚本,其中一部分需要能够查询网站,然后从中获取文本。

首先,我需要能够查询某个网站的 URL,然后我需要能够在查询后从该网站的文本中获取文本,并能够从函数中返回该文本。

如何查询网站并从中获取文本?

【问题讨论】:

    标签: php web


    【解决方案1】:

    最简单的方法:

    file_get_contents()

    这将为您提供网页的来源。

    您可能想要更完整的东西,所以请查看cURL,以获得更好的错误处理和设置用户代理等等。

    从那里,如果您只想要文本,您将不得不解析页面。为此,请参阅:How do you parse and process HTML/XML in PHP?

    【讨论】:

      【解决方案2】:

      我会做一个 dom 搜索,看看http://www.php.net/manual/es/domdocument.load.php Domxpath 可能也很有用:http://php.net/manual/en/class.domxpath.php

      $doc = new DOMDocument;
      $doc->load("http://mysite.com");
      $xpath = new DOMXpath($doc);
      $elements = $xpath->query("*/div[@id='yourTagIdHere']");
      

      【讨论】:

        【解决方案3】:

        您可以使用file_get_contents,或者如果您需要更多控制(即提交 POST 请求、设置用户代理字符串等),您可能需要查看cURL

        file_get_contents 示例:

        $content = file_get_contents('http://www.example.org');
        

        基本 cURL 示例:

        $ch = curl_init('http://www.example.org');
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3');
        
        $content = curl_exec($ch);
        
        curl_close($ch);
        

        【讨论】:

          【解决方案4】:

          如果您安装了 Curl,请使用它。否则:

          $website = file_get_contents('http://google.com');
          

          然后你需要在字符串中搜索你想要的文本。具体操作方式取决于网站以及您尝试阅读的文本。

          【讨论】:

            【解决方案5】:

            您需要使用 CURL。你可以得到一些样品here

            【讨论】:

              【解决方案6】:

              如果您想要更多控制,请使用 cURL。否则:file_get_contents..

              $url  = "http://www.example.com/test.php";  // Site URL.
              $site = file_get_contents($url);             // Gets site response.
              

              【讨论】:

                【解决方案7】:

                这是否可以通过使用上面已经列出的方法从网页中获取所有内容,然后使用 regex删除左括号和右括号之间的所有字符?

                如下所示的页面:

                <html><style> h1 { font-style:... }</style><h1>stuff in here</h1></html>
                

                在正则表达式之后会变成这个

                h1 { font-style:... }stuff in here
                

                因为我们想要删除各种标签之间的所有代码,例如 [style] 标签,我们可以首先使用正则表达式删除 [style 和 /style] 之间的所有字符,这样我们就剩下:

                stuff in here
                

                那么这行得通吗?如果您认为会发生错误,或者您预见到错误,请回复,因为我想使用此解析创建一个工具。

                【讨论】:

                  猜你喜欢
                  • 2017-03-22
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-05-13
                  • 1970-01-01
                  • 2014-06-03
                  • 2019-01-29
                  • 1970-01-01
                  相关资源
                  最近更新 更多