2021SC@SDUSC
目录
一、摘要
二、项目介绍
1.爬虫目的
2.爬虫思路
3.结果演示
三、项目分析
1.项目文件概览
2.项目核心文件分析
四、总结
一、摘要
本篇博客是第三个项目“QiChaCha”的第一篇博客,本篇博客主要是对该项目的总体进行概述介绍,并且明确该项目里需要分析的核心代码部分。
二、项目介绍
1.爬虫目的
本项目爬虫的对象是企查查网站企查查-公司企业注册信息查询-全国企业信用信息公示系统
爬虫的目的是获取全国工业园区信息以及全国工业园区企业简要信息(一个工业园区里有多个企业)。
企查查工业园区(以苏州工业园区为例):
这其中包含了工业园区的相关基本信息,以及该工业园区内的企业列表。
企查查工业园区中的企业(以苏州工业园区企业列表第一家为例):
这其中包含了企业的各种相关信息。
2.爬虫思路
- 先获取园区信息(省份\城市-区\占地面积\企业数\详情链接),存为 csv
- 逐个访问详情链接, 获得所有企业数
- 将所有数据合并在一张表里(因爬虫过程中被反爬等,中断继续,导致部分数据重复,进行 csv 去重\排序)
- 高德地图 POI 信息爬取(园区、企业)
- Tableau & echarts、django、mysql 等在线可视化
3.结果演示
爬虫结果演示(csv文件形式)
全国工业园区信息.csv以及全国工业园区企业简要信息.csv
其中一个例子:
工业园区(包括该园区地理位置,占地面积,该园区首页对应的url):
该工业园区(恒大国际家居建材城)对应的企业之一(包括该企业的地理位置,法定代表人姓名联系方式,企业注册资金,企业对应的url等):
爬虫结果演示(echarts等可视化图表展示):
在一张地图上表示工业园区等相关信息,其中以每个省份划分,可以看到某个省对应的园区数量以及该具体的园区名称和该园区所含企业数。
三、项目分析
1.项目文件概览
项目一共有10个.py文件,下面总体介绍这十个文件的具体作用。
- config.py 配置文件(企查查需要代理,高德不需要)
- get_parks.py 获取园区信息
- get_parks_companies.py 获取企业信息(单线程)
- get_parks_companies_threads.py 获取企业信息(多线程)
- deal_error.py 处理企查查爬虫中的错误(该部分重新爬取\其他策略等)
- deal_result.py 处理企业信息 csv 文件: 去重\排序
- get_addr_longitude_latitude.py 高德 POI 获取(地址\经度\维度),作为中间函数被其他文件导入
- get_parks_addr_long_lati.py 园区高德 POI 获取(地址\经度\维度)
- get_companies_addr_long_lati.py 企业高德 POI 获取(地址[已有]\经度\维度)
- echarts_parks.py 基于园区的数据进行可视化, 调用 pyecharts 模块
- jn_parks.json 程序运行中生成的中间文件, 标记各园区的经纬度, 被 pyecharts 模块调用
- map.html 对应的工业园区分布地图,即一张中国地图,标出其中每个省份的工业园区及相关信息
2.项目核心文件分析
由于该项目涉及很多可视化的操作,例如获取园区的高德POI(地址、经度、纬度),最后将这些地理位置汇总成可视化的工业园区分布地图 。涉及这些可视化部分的代码并不是该项目的核心代码,所以对这些不进行分析。
对该项目分析的部分核心是对网站的爬取部分,所以我将对该文件中的以下三个进行代码分析:
- get_parks.py 获取园区信息
- get_parks_companies.py 获取企业信息(单线程)
- get_parks_companies_threads.py 获取企业信息(多线程)
四、总结
通过对该项目的整体概述总览,我看到了爬虫的更多可能性,以及这些更多可能性带来的多样性,让我看到了对这种网站爬虫的结果既可以存储为CSV文件,也可以转换成更加具有视觉效果的可视化地图。同时也体验到了更加不一样的爬虫技巧。
我将在下一篇博客开始对该项目的核心文件代码进行分析。