【Python】企业信息查询程序-风鸟

查看 22|回复 1
作者:Cristy   
aliases:
tags:
author: Aura Service
created: 2024-11-06T17:21:25
updated: 2024-11-08T02:33:43
免责声明: 本程序仅用于学习目的,严禁用于任何商业或非法用途。
隐私保护提示: 文章中已对敏感信息进行脱敏处理。如果您发现任何潜在的隐私泄露问题,请不吝告知,以便我及时进行修改或删除。感谢您的理解和支持!
本文档旨在介绍一个用于查询企业信息并生成Excel表格的Python程序。程序分为两个版本,分别使用Selenium+Chromedriver和API请求来实现功能。以下是详细的程序介绍和使用指南。
1 目录
[ol]
  • 程序概述
  • 版本A:Selenium+Chromedriver
  • 环境要求
  • 使用步骤
  • 代码说明
  • 流程图
  • 版本B:API请求
  • 环境要求
  • 使用步骤
  • 代码说明
  • 流程图
  • 导出结果样式
  • 扩展方向
  • 下载链接
    [/ol]
    2 程序概述
    本程序能够根据company.txt中提供的公司名称,生成包含关键信息的Excel表格。目前,表格中包括以下字段:
    统一社会信用代码 业企名称法定代表人经营状态成立日期出资额实缴出资参保人数组织机构代码工商注册号纳税人识别号企业类型合伙期限核准日期所属地区所属行业登记机关英文名注册地址通信地址经营业务范围

    程序还可以进一步扩展,以查询法律诉讼、经营风险、经营信息、知识产权等更多数据。(分享的代码不含该板块)

    3 版本A:Selenium+Chromedriver
    版本A使用Selenium库和Chromedriver来模拟浏览器操作,访问企业信息查询网站并抓取数据。
    3.1 环境要求
  • 开发环境:Python 3.6,但在Python 3.9上运行也无报错。
  • 浏览器:Chrome。
  • 手机号:未使用过的手机号(初次注册送1年VIP)。

    3.2 使用步骤
    [ol]
  • 修改company.txt,确保每行一个准确的公司名称。
  • 在风鸟-页面解析.py中,第312行和第313行替换为您的账号密码。
  • 在ChromeDriver.py中,第39行可以修改为本地chromedriver路径,以避免网络问题导致的自动安装失败。
    [/ol]
    3.3 代码说明
    以下是版本A中的关键代码段:
    3.3.1 doLogin函数
    def doLogin(username, password):
        # 发送POST请求进行登录
        headers = {
            # 设置请求头
        }
        data = {
            "mobile": username,
            "smsCode": "",
            "password": password,
            "type": "password"
        }
        response = requests.post("https://www.riskbird.com/api/auth/login", json=data, headers=headers)
        # 将请求返回的cookie添加到WebDriver中
        for cookie in response.cookies:
            driver.driver.add_cookie({'name': cookie.name, 'value': cookie.value})
        return True if response.status_code == 200 else False
    3.3.2 getCompanyPageTableHtml函数
    def getCompanyPageTableHtml(company):
        # 查找,进入查找列表
        search_base_url = "https://www.riskbird.com/ent/"
        search_url = search_base_url + company + ".html"
        driver.navigate_to(search_url)
        # 逐帧滑动到最底部
        for i in range(15):
            time.sleep(0.2)
            driver.driver.execute_script(f'document.documentElement.scrollTop={(i + 1) * 300}')
        # 执行JavaScript脚本获取页面中的表格HTML
        resultMap = {
            "COMPANY": driver.driver.execute_script("""
                // JavaScript代码
            """),
            "FATHERCOMPANY": driver.driver.execute_script("""
                // JavaScript代码
            """),
            "SONCOMPANY": driver.driver.execute_script("""
                // JavaScript代码
            """),
            "BRANCHCOMPANY": driver.driver.execute_script("""
                // JavaScript代码
            """)
        }
        return resultMap
    3.4 流程图 A
    graph TD
        A[开始] --> B[修改company.txt]
        B --> C[替换账号密码]
        C --> D[修改Chromedriver路径]
        D --> E[运行风鸟-页面解析.py]
        E --> F[登录并获取Cookie]
        F --> G[访问企业信息页面]
        G --> H[滑动页面并获取表格HTML]
        H --> I[解析表格并生成Excel]
        I --> J[结束]
    4 版本B:API请求
    版本B直接使用API请求来获取企业信息,效率更高,但需要处理API的限制和反爬虫机制。
    4.1 环境要求
  • 开发环境:Python 3.6,但在Python 3.9上运行也无报错。
  • 自备手机号:用于登录和获取Cookie。

    4.2 使用步骤
    [ol]
  • 修改company.txt,确保每行一个准确的公司名称。
  • 在风鸟-页面解析-post.py中,第21行配置cookie.txt路径,第22行配置导出文件路径。
  • 在第156行和第157行填入您的账号密码,程序将自动登录并获取cookie。
    [/ol]
    4.3 代码说明
    以下是版本B中的关键代码段:
    4.3.1 doLogin函数
    def doLogin(username, password):
        # 发送POST请求进行登录
        url = "https://www.riskbird.com/auth/login"
        headers = {
            # 设置请求头
        }
        data = {
            "mobile": username,
            "smsCode": "",
            "password": password,
            "type": "password"
        }
        session = requests.Session()
        response = session.post(url, headers=headers, json=data)
        if response.status_code == 200 and response.json().get("code") == 20000:
            log.info("Login successful.")
            cookies = '; '.join([f"{cookie.name}={cookie.value}" for cookie in session.cookies])
            open(cookie_path, "w").write(cookies)
            return True
        else:
            log.info("Failed to login")
            return False
    4.3.2 getCompanyPageTableHtml函数
    def getCompanyPageTableHtml(company):
        url = f"https://www.riskbird.com/ent/{company}.html"
        headers = {
            "cookie": getCookie()
        }
        try:
            response = requests.get(url=url, headers=headers)
            if response.status_code == 200:
                return response.text
        except Exception as e:
            log.error(f"An error occurred: {e}")
            return False
    4.4 流程图 B
    graph TD
        A[开始] --> B[修改company.txt]
        B --> C[配置cookie.txt和输出路径]
        C --> D[填入账号密码]
        D --> E[运行风鸟-页面解析-post.py]
        E --> F[登录并获取Cookie]
        F --> G[发送API请求获取企业信息]
        G --> H[解析API响应并生成Excel]
        H --> I[结束]
    5 导出结果样式

    6 扩展方向
    [ol]
  • 更多信息的api整合以及结果入表整理。
  • 结果表数据信息样式优化,包括单元格格式优化等。
  • 增加可视化UI,简化操作,降低使用难度。
  • 增加代{过}{滤}理IP进行容错。
  • 增加多账号自动交替查询。
    [/ol]
    7 代码整理下载链接
    程序源码可通过以下链接下载:
    123云盘下载

    代码, 风鸟

  • wuuming   

    厉害了, 大佬威武
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部