当前位置: 首页 > wzjs >正文

做思维导图的在线网站网络营销做的比较好的企业

做思维导图的在线网站,网络营销做的比较好的企业,江门网站制作建设,用ps做一份网站最近闲来无事,有个朋友问我他在用PHP写一个抓取图书信息的爬虫程序出现了一些BUG,想要让我看下帮他修改,无奈写的语法太过复杂凌乱,索性我重头再来,直接用自己的方式写了一篇给他一些思路做参考。 以下是一个使用PHP编…

最近闲来无事,有个朋友问我他在用PHP写一个抓取图书信息的爬虫程序出现了一些BUG,想要让我看下帮他修改,无奈写的语法太过复杂凌乱,索性我重头再来,直接用自己的方式写了一篇给他一些思路做参考。

在这里插入图片描述

以下是一个使用PHP编写的简单图书信息爬虫示例,使用 GuzzleHttp 发送HTTP请求和 Symfony DomCrawler 解析HTML内容:

<?php
require 'vendor/autoload.php';use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;// 创建HTTP客户端
$client = new Client(['headers' => ['User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36']
]);// 存储结果的CSV文件
$csvFile = fopen('books.csv', 'w');
fputcsv($csvFile, ['书名', '作者', '价格', '评分', '简介']);// 示例:爬取豆瓣读书的编程类书籍(实际使用时请遵守网站规则)
$baseUrl = 'https://book.douban.com/tag/编程?start=%d';for ($page = 0; $page < 3; $page += 20) { // 爬取3页try {$response = $client->get(sprintf($baseUrl, $page));$html = (string)$response->getBody();$crawler = new Crawler($html);// 提取图书信息$crawler->filter('li.subject-item')->each(function (Crawler $node) use ($csvFile) {$title = $node->filter('h2 a')->text();$info = $node->filter('.pub')->text();$rating = $node->filter('.rating_nums')->text('暂无评分');$desc = $node->filter('.info p')->text('暂无简介');// 清理数据$info = trim(str_replace(["\n", " "], "", $info));list($author, $publisher, $price) = explode('/', $info, 3) + ['', '', ''];fputcsv($csvFile, [trim($title),trim($author),trim($price),trim($rating),trim($desc)]);});echo "已抓取第 ".($page/20+1)." 页数据\n";sleep(1); // 遵守爬虫道德,添加延迟} catch (Exception $e) {echo "抓取失败: ".$e->getMessage()."\n";}
}fclose($csvFile);
echo "数据已保存到 books.csv\n";

使用说明

  1. 安装依赖

    composer require guzzlehttp/guzzle symfony/dom-crawler
    
  2. 注意事项

    • 需遵守目标网站的robots.txt规则
    • 添加适当的请求延迟(示例中为1秒)
    • 需要处理可能出现的反爬机制(验证码、IP封禁等)
    • 实际应用中建议使用代理IP池

核心功能说明

  1. HTTP请求

    • 使用Guzzle模拟浏览器请求
    • 添加User-Agent头避免被简单拦截
  2. 数据解析

    • 通过CSS选择器定位元素
    • 提取书名、作者、价格等信息
    • 处理可能缺失的数据字段
  3. 数据存储

    • 使用CSV格式存储结果
    • 包含字段:书名、作者、价格、评分、简介
  4. 分页处理

    • 通过URL参数控制分页
    • 示例抓取3页数据(可调整循环次数)

扩展建议

  1. 反爬应对
// 随机延迟
sleep(rand(1, 3));// 使用代理
$client = new Client(['proxy' => 'http://user:pass@proxy:port'
]);
  1. 数据库存储
// 使用PDO存储到MySQL
$pdo = new PDO('mysql:host=localhost;dbname=books', 'user', 'pass');
$stmt = $pdo->prepare("INSERT INTO books (...) VALUES (...)");
$stmt->execute([...]);
  1. 异步请求
// 使用Guzzle的异步并发
$promises = [];
foreach ($urls as $url) {$promises[] = $client->getAsync($url);
}
$results = GuzzleHttp\Promise\unwrap($promises);

上面就是我所编写的全部过程,不过如果有更好的方案或者建议可以评论区留言讨论。

http://www.dtcms.com/wzjs/526420.html

相关文章:

  • 网页预览手机网站效果软文推广做的比较好的推广平台
  • 想网上卖家具怎么做网站武汉服装seo整站优化方案
  • 山东平台网站建设价位牛排seo
  • 北京学网站开发要看网的域名是多少
  • 本地搭建linux服务器做网站指数函数
  • 外贸独立站saas建站搜索引擎名词解释
  • 网站建设周期计划seo优化与推广招聘
  • 个人开发app需要多少钱沈阳seo建站
  • 运营网站是什么意思磁力搜索器
  • 东莞网站制作咨询祥奔科技武汉seo网站管理
  • asp.net手机网站开发教程临沂seo整站优化厂家
  • 微信上优惠券的网站怎么做的网络营销中的四种方法
  • 给人做网站多少钱如何在百度发广告
  • 有个做名片什么的网站如何建立网站 个人
  • 做养生网站怎么样旅游景点推广软文
  • 怎么做照片网站搜索引擎优化简历
  • 东莞网站开发技术公司电话海外网络推广服务
  • 广州建站网络公司铜川网站seo
  • 昆明专业网站设计公司百度模拟点击软件判刑了
  • 上海建设银行网站转账记录查询sem数据分析
  • 石家庄外贸网站制作优化网站关键词排名
  • 南京网站设计制作公司排名榜nba最新交易信息
  • 河北保定网站建设外贸网站免费推广b2b
  • 谁有学做网站论坛账号福州短视频seo网站
  • 注销公安网站备案号上海短视频seo优化网站
  • 什么时候网站建设免费的短视频app大全下载
  • 公司网站建设申请报告代写稿子的平台
  • 淘客网站如果做优化小程序怎么开发自己的小程序
  • 国内的优秀设计网站百度搜索大数据查询
  • 企业做企业网站的好处国内最新新闻事件