码农知识堂 - 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(亲测可行)

  • 相关阅读:
    [Vue] 自定义命令
    ArcgisForJS如何使用ArcGIS Server发布的GP服务?
    Tips linux如何获取当前连接的ssh用户信息
    doc文件乱码怎么恢复?
    IB DP 语言怎么选?
    Java:外包Java项目有什么好处?
    更深层的去理解负载均衡
    【操作系统】死锁(详细)
    【云原生 | 从零开始学Kubernetes】十七、Kubernetes核心技术Service
    2022-08-13 达梦创建实例与用户密码过短
  • 原文地址:https://blog.csdn.net/qq_40755094/article/details/127413934
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号