# 企业信息爬虫 **Repository Path**: yujiang0030/LevelSpider ## Basic Information - **Project Name**: 企业信息爬虫 - **Description**: No description available - **Primary Language**: Unknown - **License**: CC-BY-SA-4.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-08-31 - **Last Updated**: 2024-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python ## README # 项目说明 ## 项目目标 给定企业名单,在天眼查和企查查上收集企业的信息,并根据规则判断企业档次。 ## 快速上手 0. 将这个文件夹复制一份,在命令行或者powershell里打开新目录。 1. 登录自己的天眼查和企查查账号,获得网页的cookies (Google浏览器直接选中Ctrl+C,不要“右键-复制值”),分别填写到`config.py`中的`t_cookies`和`q_cookies`列表中。 2. 将待爬取的企业名称放到目录下,文件命名为`source.csv`。首行是英文字母“name”,第二行开始,每行一个公司名称。 3. 运行`initial.py`,输入`Yes`确定初始化。 ```shell python initial.py ``` 此步骤会建立一个SQLite数据库(默认为`source.db`),一个结果文件`tmp.csv`用于存储爬虫结果,一个日志文件`log.csv`存储爬取失败的爬虫结果和原因。 4. 运行`spider.py`,开始爬取数据。 ```shell python spider.py ``` - 连续爬取50个以上的公司可能发出提示音,并显示被反爬,此时要打开任意一个天眼查的网页,输入图形验证码。 - 爬取失败的公司会写在同目录下的`log.csv`文件中,有公司名称和失败原因。 - 爬取结果存储在`tmp.csv`文件中。 5. 运行`judge.py`,进行判断。 ```shell python judge.py ``` 判断结果保存在目录下的`out.xlsx`文件中。 ## 各文件作用 ### config.py 配置文件,存储了各种文件路径以及爬虫的各种配置项。 - 快速上手中,除了python文件,其他文件的路径都能在此文件中调整。 - `cookies`在此文件中更新。`spider.py`中访问互联网需要的headers出自此文件。 - 此文件还存储了`initial.py`中数据库的路径,以及爬虫结果文件的表头。 ### initial.py 预处理程序,在爬虫开始前进行预处理 1. 建立SQLite数据库,存储爬取状态 - 数据库的路径和表名可以在`config.py`中进行修改,默认为`source.db`。 - 存储爬取状态的表结构如下,名称可以修改默认为`company`: ```sqlite create table { name text, -- 企业名称 done integer -- 是否爬取,0为未爬取,1为已爬取 } ``` 2. 建立爬虫结果文件,并写入表头。 - 结果文件文件路径可以在`config.py`中进行修改,默认为`tmp.csv` ### spider.py 爬虫程序 - 读取数据库中未爬取的文件,在天眼查和企查查上搜索,并获取公司的各项信息,保存到爬虫结果文件。 - 如果爬取失败,保存日志到日志文件,后续爬取时不会再爬取此公司。 - 连续多次爬取失败,会判定为被反爬了,此时程序会暂停等待人工处理。 - 一般是天眼查出了验证码,需要在浏览器访问天眼查的页面,输入图形验证码,再回到爬虫,输入任意字符,继续爬取。 ### judge.py 判断程序 - 根据规则和爬虫结果,判断公司档次,并将数据,结果和理由导出到Excel文件,默认为`out.xlsx`。 - 具体判断规则请打开此文件,阅读文件头注释。 ## 不足 1. 天眼查反爬 平均每收集50个企业(即100次左右的连续访问)就需要一次图形验证码,导致不能工程化。 适合做小工具,不适合部署到服务器上。 2. 数据存储很混乱 一开始用csv存储原始数据,使用SQLite3存储爬取进度,使用csv存储日志文件,导出Excel结果。 ## 改进方向(建议) 1. 让数据存储更统一 从Excel获得原始数据和爬取结果,使用SQLite3存储爬取进度和日志文件,最终导出Excel形式的结果。 2. 独角兽企业和上市企业 这两个标签可以直接用高级账号从企查查导出,可以下载下来在本地判断,避免访问企查查,节省时间。 3. 多线程爬取 使用多个天眼查和企查查账号,获取多个cookies,将程序改为多线程。 要求:多个账号 4. 使用Scrapy框架进行工程化 如果能解决天眼查的图形验证码,可以尝试Scrapy工程化,更稳定,也可以部署到服务器上,不过需要改写成Scrapy的逻辑,性价比较低。 ## requirements python 3.9 beautifulsoup4 pandas requests