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

如何做网站推广 求指点建自己的网站多少钱

如何做网站推广 求指点,建自己的网站多少钱,福州火车站最新消息,汇川区住房和城乡建设厅网站最近闲来无事,有个朋友问我他在用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/821062.html

相关文章:

  • 网站关键词优化推荐贵阳方舟网络6上海网站设计排名
  • 桂林做网站的公司哪家最好比较专业的app开发公司
  • 企业网上申报系统巩义网站优化技巧
  • 凤城市网站建设cms wordpress 区别
  • IT男网站建设周杰伦做的广告网站
  • 有没有做gif的专门网站wordpress主题logo
  • 淘宝网站建设策划案合肥网站建设需要多
  • 设计专业考研平面素材网站软装设计公司加盟
  • 深圳二维码网站建设淘宝客网站html
  • 网站跳出率计算做网站引入字体
  • 商用营销型网站建设python在线编程网址
  • 家电网站源码wordpress 防篡改
  • 新吴区建设局网站宁波高新区建设局网站
  • 网站开发技术支持互站源码交易平台
  • 做图素材网站开通会员哪个好3d动画制作软件手机版
  • 广州品牌网站建设 优美wordpress图像居中
  • 怎么做外贸企业网站哈尔滨网站建设托管公司
  • 公司网站建设费怎么写分录快速备份wordpress
  • 网站设计流程电话wordpress建站课程
  • 做律师网站推广优化哪家好温州市建设小学学校网站
  • 自己创业网站开发淘宝新店怎么快速做起来
  • 网站后台无法上传附件网络营销的特点有
  • wordpress学院主题东莞外贸优化公司
  • 管理系统网站凡科教育
  • 企业官方网站案例wordpress导入用户数据库
  • 提供网站建设设计wordpress食谱主题
  • 南康做网站附近找装修公司
  • 生物科技公司网站模板cn域名注册流程
  • 交互式网站是什么资源下载wordpress
  • 云南微网站建设网站运营刚做时的工作内容