码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【python】批量获取企业公司的统一社会代码


    目录

    1.任务需求

    输入

    输出

    2.解决办法 

    3.运行结果

    4.特殊情况

    4.1 公司统一社会代码为0?

    4.2 搜索次数过多,会弹出验证码或者登陆界面?

    4.3 安装selenium包,提示没有find_element_by_id用法?


    1.任务需求

    输入

     给定一个公司企业的列表,用excel存放,如下图所示: 

    输出

    通过企查查(或者天眼查等)获取企业的18位统一社会代码,最终存放在excel中,如下所示:

    2.解决办法 

    使用python中的web自动化测试包selenium可以解决。

    代码如下:

    1. import openpyxl
    2. from time import sleep
    3. #获取查询名单
    4. list_name = []
    5. path = r'C:\Users\Aiken\Desktop\data.xlsx'
    6. wb = openpyxl.load_workbook(path)
    7. wb_sheet = wb['Sheet2']
    8. maxrows = wb_sheet.max_row
    9. for i in range(maxrows-1):
    10. name = wb_sheet.cell(i+2,1).value
    11. list_name.append(name)
    12. from selenium import webdriver
    13. # #进入企查查
    14. driver = webdriver.Chrome()
    15. url = 'https://www.qcc.com/?utm_source=baidu1&utm_medium=cpc&utm_term=pzsy'
    16. driver.get(url)
    17. driver.refresh()
    18. sleep(15)
    19. cnt = 0
    20. for j in list_name:
    21. cnt += 1
    22. # 如果发生需要验证码或者登陆的情况,可以用if判断在上一次中断的地方继续
    23. # if(cnt >= 353) :
    24. # sleep(1)
    25. driver.find_element_by_id('searchKey').clear() #定位到搜索框
    26. driver.find_element_by_id('searchKey').send_keys(j) #在搜索框中输入查询企业名单
    27. try:
    28. driver.find_element_by_xpath('/html/body/div[1]/div[2]/section[1]/div/div/div/div[1]/div/div/span/button').click()
    29. except:
    30. driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div/div/div/div/div/span/button').click()
    31. try:
    32. name_id = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[3]/div/div[2]/div/table/tr[1]/td[3]/div/div[4]/div[1]/span[4]/span/div/span[1]').text
    33. except:
    34. name_id = "0000"
    35. print(cnt, j, name_id)
    36. wb_sheet.cell(list_name.index(j)+2,2,value = name_id)
    37. wb.save(path)
    38. wb.close()
    39. driver.close()

    3.运行结果

    终端会输出相关信息,同时如果不报错的话,会直接写入到excel中。

    4.特殊情况

    4.1 公司统一社会代码为0?

    部分公司数据可能为0,这是因为有的公司的企查查信息布局不一样,导致使用html语法定位时候没找到数据。如果数据量少,可以直接手动修改。如果数据量多,可以修改代码。

    4.2 搜索次数过多,会弹出验证码或者登陆界面?

    可以设置好睡眠时间sleep(10),手动扫码登陆,然后通过断点的方式继续输出,然后把输出的数据放到txt中,再转化一下就行。 (更好的办法肯定是解决反爬虫机制!)

     

    4.3 安装selenium包,提示没有find_element_by_id用法?

    这是因为高版本的selenium更改了语法方式。可以把selenium版本更改为3.3.1(亲测可行)

  • 相关阅读:
    计算机毕业设计之java+ssm服装定制系统
    ecology报错 License文件上传出错!
    第二证券|12月A股投资方向来了!这些板块已先涨为敬
    javaweb eclipse项目环境问题
    最后的挣扎 - Qt For Android on HuaWei Mate 60Pro (v4.0.0)
    Home Assistant添加ESPHome设备(IO控制继电器)
    Null check operator used on a null value
    MySQL索引
    19.声明式事务的事务隔离级别和事务传播行为
    Akshare获取分红数据
  • 原文地址:https://blog.csdn.net/qq_40755094/article/details/127413934
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号