当前位置:首页 > 未分类

curl网页采集相关

admin1个月前 (02-10)未分类151
  1.  Accept-Encoding需要单独设置,不能放在header里,对应curl 的CURLOPT_ENCODING属性。。如果采集到的网页是乱码,可以设置这个为gzip,deflate试试

    1. // 例:
      curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
  2. 使用SimpleHTMLDom解析HTML(第三方库)

    1. // 使用composer安装
      composer require sunra/php-simple-html-dom-parser
    2. // 示例
      require 'vendor/autoload.php'; // 引入自动加载文件
      $html = file_get_contents('http://example.com');
      $dom = new simple_html_dom();$dom->load($html);
      foreach($dom->find('a') as $element) {
          echo $element->href . '<br>'; // 获取所有链接的href属性
      }
      $dom->clear(); // 清除DOM对象以释放内存
  3. 使用Guzzle(HTTP客户端)和Symfony的DomCrawler(DOM操作)

    1. //  使用composer安装
      composer require guzzlehttp/guzzle symfony/dom-crawler symfony/css-selecto
    2. //  示例
      require 'vendor/autoload.php'; // 引入自动加载文件
      use GuzzleHttp\Client;
      use Symfony\Component\DomCrawler\Crawler;
      
      $client = new Client();
      $response = $client->request('GET', 'http://example.com');
      $html = (string) $response->getBody();
      $crawler = new Crawler($html);
      $links = $crawler->filter('a'); // 获取所有链接的节点集合
      foreach ($links as $link) {
          echo $link->getAttribute('href') . "\n"; // 获取链接的href属性
      }
  4. 总结:

    选择哪种方法取决于你的具体需求,比如是否需要处理复杂的HTML结构、是否需要处理大量数据等。对于大多数情况,SimpleHTMLDom和Guzzle+DomCrawler的结合使用是比较方便和强大的选择。如果你需要处理非常复杂的HTML或者需要更高级的HTTP功能,那么使用Guzzle和DOMDocument可能是更好的选择。对于简单的需求,file_get_contents()和DOMDocument或SimpleHTMLDom已经足够了。


扫描二维码推送至手机访问。

版权声明:本文由服务端开发技术分享发布,如需转载请注明出处。

本文链接:https://www.htmlcms.cn/?id=18

分享给朋友:

相关文章

_initialize 和 __construct中不能return

1、构造函数是一个没有返回值的特殊函数,所有即使加上return也没意义,他不会执行的。2、不仅php,所有面向对象的语言的构造函数都没有return。因此正确的方法应该为:…

ThinkPHP6,where和whereLike同时用踩坑记录

ThinkPHP6,where和whereLike同时用踩坑记录。。。// 以下示例共用条件  $where_or=[];    $where_or_i=[];  &…

MySQL 3个字段作为一个字段输出

在MySQL中,如果你想将3个字段合并成一个字段输出,可以使用CONCAT()函数或者CONCAT_WS()函数。这两个函数都可以用来连接字符串,但CONCAT_WS()允许你指定一个分隔符。1. 使用CONCAT() CONCAT()函数…

git报错: fatal: bad object HEAD

一般问题原因:.git内文件有问题,比如误删除了一些文件(我就是因为.git\objects\pack文件夹过大,删除了这个文件夹)。处理建议: 在其他盘符或文件夹把项目拉下来,然后复制.git文件夹到要操作的文件夹覆盖,然后继续…

laravel 安装

laravel 安装

一、laravel 安装1、laravel 最新版本安装composer global require "laravel/installer"  #使用Composer下…