查看: 984|回复: 0

用php写一个爬取http://pfsc.agri.cn/#/priceMarket这个网页价格数据的接口

[复制链接]

748

主题

39

回帖

3907

积分

管理员

总舵主

积分
3907
QQ
发表于 2024-1-26 21:12:28 | 显示全部楼层 |阅读模式

为了创建一个用PHP编写的接口来爬取网页上的价格数据,你需要使用PHP的爬虫库来获取页面内容并解析HTML。在这个例子中,我将使用PHP的Guzzle库来进行HTTP请求,并使用PHP的Simple HTML DOM Parser来解析HTML。
首先,你需要确保安装了Guzzle和Simple HTML DOM Parser库。你可以通过Composer来安装它们:
  1. composer require guzzlehttp/guzzle
  2. composer require sunra/php-simple-html-dom-parser
复制代码
接下来,你可以编写一个PHP脚本来爬取 [color=var(--link)]http://pfsc.agri.cn/#/priceMarket 页面的价格数据。下面是一个示例代码:

代码:
  1. <?php

  2. require 'vendor/autoload.php';

  3. use GuzzleHttp\Client;
  4. use Sunra\PhpSimple\HtmlDomParser;

  5. // 创建一个 Guzzle HTTP 客户端
  6. $client = new Client();

  7. // 发送请求并获取页面内容
  8. $response = $client->request('GET', 'http://pfsc.agri.cn/#/priceMarket');
  9. $html = (string)$response->getBody();

  10. // 用 Simple HTML DOM 解析 HTML
  11. $dom = HtmlDomParser::str_get_html($html);

  12. // 获取价格数据的容器元素
  13. $priceContainer = $dom->find('div[class=priceMarketData]', 0);

  14. // 初始化一个数组来存储价格数据
  15. $priceData = [];

  16. // 遍历价格数据容器元素,获取价格数据
  17. foreach ($priceContainer->find('tr') as $row) {
  18.     $rowData = [];
  19.     foreach ($row->find('td') as $cell) {
  20.         $rowData[] = $cell->plaintext;
  21.     }
  22.     $priceData[] = $rowData;
  23. }

  24. // 输出价格数据
  25. header('Content-Type: application/json');
  26. echo json_encode($priceData, JSON_PRETTY_PRINT);
复制代码
这个脚本首先使用Guzzle库发送GET请求来获取页面内容。然后,它使用Simple HTML DOM Parser来解析HTML。在解析后,它定位到价格数据的容器元素,并遍历表格行和单元格来提取数据。最后,它以JSON格式输出价格数据。
你可以将这段代码保存为 crawl_prices.php 文件,并通过Web服务器运行它。访问这个脚本的URL将返回从网页中爬取的价格数据。

道不同,不相为谋!理想要有,万一实现了呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:2513533699@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鲁ICP备19000917号|鲁公网安备37078302000320号

在本版发帖
关注公众号
QQ客服返回顶部