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

做网站大概多少钱如何进行网站推广

做网站大概多少钱,如何进行网站推广,WordPress.com 托管,如何注册商标名称以及logo最近闲来无事,有个朋友问我他在用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/152762.html

相关文章:

  • 怎样用zblog做网站丈哥seo博客工具
  • 加强网站建设的建议seo和sem的区别是什么?
  • 建设银行鄂州分行官方网站优质的seo网站排名优化软件
  • 怎样做可以互动留言的网站whois查询 站长工具
  • 东莞网站建设属于什么专业产品运营方案
  • wordpress 自动登陆上海专业seo公司
  • 网站搭建类型app推广联盟平台
  • 网站建设浅析樱花bt引擎
  • 江苏城乡建设厅官方网站北京计算机培训机构哪个最好
  • 网站子目录是什么意思seo职位要求
  • 专业版装修用什么网站做导航条企业网站制作
  • 厦门app网站建设磁力链bt磁力天堂
  • 宁海有做网站的吗推广渠道有哪些
  • 源码怎样做网站免费个人网页制作
  • 网站图片上怎么做弹幕效果大型网站建设公司
  • 自己做项目的网站网址链接生成器
  • 北京做微信网站哪家好北京网站seo招聘
  • 营销企业网站建设北京搜索引擎优化管理专员
  • 怎样做网站系统网上推广平台有哪些
  • 手机网站需要多少钱可以发广告的100个网站
  • 铭万做的网站如何设计企业网站
  • 兰州做网站多少钱关键词怎么做快速的有排名
  • 品牌网站搭建网络推广计划书
  • wordpress仿qq空间模板长沙网站优化培训
  • 如何做魔道祖师网站如何免费创建自己的平台
  • 如何做打码网站张家界seo
  • 世界杯网站建设百度如何精准搜索
  • 天津网站建设外包百度指数关键词工具
  • 一台云服务器多少钱衡阳seo
  • 江门网站建设报价网站关键词排名优化价格