不败君

前端萌新&初级后端攻城狮

PHP采集运营类目微信商户类目

PHP采集运营类目微信商户类目

2020-06-11 18:09:27

围观(388)

又遇到了需要初始数据的需求...

所以就有了本文, 使用 PHP 采集运营的商户类目.

首先是要找到源头, 想想哪里有商户类目可以拿到商户经营类目, 所以博主选择了微信公众号的运营文档作为采集目标.

微信公众号的商户运营类目: https://kf.qq.com/faq/140225MveaUz1501077rEfqI.html


1.png


有了目标, 就要选择技术栈进行采集数据了. 博主用 PHP 框架 Laravel 和 QueryList 搭配进行采集.

Laravel 的安装就不多说了, 不会安装可以看官方文档.

QueryList 的安装很简单, 可以直接看官网: www.querylist.cc

使用 Composer 也就一句命令:

composer require jaeger/querylist

安装好之后, 照着文档这个表格采集就行了: www.querylist.cc/docs/guide/v4/table

因为目标页面就是用了表格.


放上博主写好的代码(因为是采集数据而已 并不是真的用这个继续写项目 所以代码可继续优化):

public function start()
{
    $url = 'https://kf.qq.com/faq/140225MveaUz1501077rEfqI.html';
    $html = file_get_contents($url);
    $table = QueryList::html($html)->find('table');

    // 如果需要表头 从 0 开始
    $table_rows = $table->find('tr:gt(1)')->map(function($row) {
        return $row->find('td')->texts()->all();
    });

    $rows_content = $table_rows->all();
    //dd($rows_content);

    $lst_content = [];
    $i = 0;
    $now_parent_id = 0;

    foreach ($rows_content as $row_content) {
        if (count($row_content) <= 2) continue;
        $i++;
        if (count($row_content) == 7) {
            // 当前是顶级分类和二级分类
            $now_parent_id = $i;
            $lst_content[$i] = [
                'id' => $i,
                'name' => $row_content[0],
                'parent_id' => 0,
                'level' => 1,
                'describe' => str_replace("\n", '', $row_content[3]),
            ];

            // 二级分类
            $i++;
            $lst_content[$i] = [
                'id' => $i,
                'name' => $row_content[1],
                'parent_id' => $now_parent_id,
                'level' => 2,
                'describe' => $row_content[2],
            ];
        } else {
            // 当前只有二级分类
            $lst_content[$i] = [
                'id' => $i,
                'name' => $row_content[0],
                'parent_id' => $now_parent_id,
                'level' => 2,
                'describe' => $row_content[1],
            ];
        }
    }

    return response()->json($lst_content);
}

将上面这些代码放到控制器并设置路由, 访问后可以获取 JSON 格式的数据, 已经爬好了的数据是这样的:

2.png

主要就是字段是这样的:

id   name   parent_id   level   describe

上面给的 JSON 数据已经是含有关系了, 所以拿着这些数据可以直接存到数据库.


存入到数据库的效果:

3.png

然后就可以拿着这些数据去开发一些选择类目的接口了..

SQL 格式的数据下载(博主导出的):https://pan.baidu.com/s/1del_w5s6jKfv7PeEEQ2nzg 

提取码:tlel


博主是用 MySQL-Front 这个软件导出的, 如果用了其他的软件或者程序进行导入, 例如 PHPMyAdmin 可能会不兼容无法导入.

无法导入可以下载安装 MySQL-Front 导入, 或者直接运行上面博主提供的代码即可.

本文地址 : www.bubaijun.com/page.php?id=188

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语