ptyhon 爬企查查获取统一社会信用代码,并输出表格(火狐版)

 

#导入的xlsx,第一行留空,第二行开始第一列写企业名称即可

# 1、引入包
import importlib  # 提供import语句
import openpyxl
import sys
import time  # 提供延时功能
import xlrd  # excel文件读取
import os  # 系统操作库 用于打开chrome
import xlwt  # excel文件写入
from xlutils.copy import copy  # excel文件复制
from selenium.webdriver.common.by import By  # 用于获取网页中的相关元素、标签
from selenium import webdriver

importlib.reload(sys)  # 避免utf-8等编码问题的出现
import openpyxl as pl

# 2、从excel获取查询企业单位

inc_list = []
path = r'C:\Users\lemonmemes\Desktop\企业名称和信用代码.xlsx'  # 获取本地文件
wb = openpyxl.load_workbook(path)
wb_sheet = wb['Sheet1']  # 获取到文件sheet1页签
maxrows = wb_sheet.max_row
for i in range(maxrows - 1):
    name = wb_sheet.cell(i + 2, 1).value  # 从第2行开始
    inc_list.append(name)  # 获取到的名称写到inc_list 存储
print(inc_list)
inc_len = len(inc_list)  # 获取总共读取到的列表元素个数

# 3、伪装成浏览器,防止被识破,并手动登录
options = webdriver.FirefoxOptions()
options.set_preference("general.useragent.override",
                       "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36")

driver = webdriver.Firefox(options=options)

driver.get('https://www.qichacha.com/user_login')

time.sleep(30)
# 登录操作


# 4、开始爬虫
Credit_List = []  # 用来装社会信用代码的空列表
for i in range(inc_len):
    txt = inc_list[i]
    time.sleep(1)
    if (i == 0):  # 如果是第一次 则直接向搜索框注入内容,不用清除搜索框中的内容。
        # 向搜索框注入文字
        driver.find_element(By.ID, 'searchKey').send_keys(txt)  # 这里的ID可以用开发者界面在搜索框那找到
        # 单击搜索按钮
        time.sleep(3)
        srh_btn = driver.find_element(By.XPATH,
                                      '/html/body/div[1]/div[2]/section[1]/div/div/div/div[1]/div/div/span/button')  # 定位按钮
        driver.execute_script("arguments[0].click();", srh_btn)

        #   srh_btn = driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/section[1]/div/div/div/div[1]/div/div/span/button')    #这里的XPATH直接复制过来替换掉就可以
        #    srh_btn.click()
        time.sleep(2)
    else:
        # 清楚搜索框内容
        driver.find_element(By.ID, 'searchKey').clear()
        # 向搜索框注入下一个企业地址
        driver.find_element(By.ID, 'searchKey').send_keys(txt)
        # 找到并点击搜索按钮
        srh_btn = driver.find_element(By.XPATH, '/html/body/div[1]/div[1]/div/div[1]/div/div/div/div/span/button')
        srh_btn.click()

    try:
        # 直接找到装在社会信用代码的标签
        credit_code = 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[3]/div[1]/span[4]/span').text

        # 字符化,防止后续出现编码问题
        credit_code = str(credit_code)
        print(txt + "社会码:", credit_code)  # 每找到一条,则打印一条在终端上。
        Credit_List.append(credit_code)  # 添加到列表

    except:
        credit_code = '没有找到统一社会码,可能是企业名称错误或者不全...'
        Credit_List.append(credit_code)  # 没找到也要添加到列表里面去,实现与企业一一对应
        print("没有找到统一社会码,可能是企业名称错误或者不全...")

    # print(Credit_List) #获取到所有的统一社会代码

# 网页按钮路径获取


# 5、读取到的数据存入excel中
wb = pl.load_workbook(path)  # 打开工作簿
ws = wb.active  # 读取第一张工作表

i = 0
while i < len(Credit_List):
    ws.cell(row=i + 2, column=2, value=Credit_List[
        i])  # 将信用代码的列表中的每个数据写入到excel中,cell(row=2,column=2,values = 统一信用代码) row表示第2行,column表示第2列,填入统一信用代码.
    print(f'社会统一信用码:{Credit_List[i]}正在存入{ws.cell(i + 2, 1).value}中')  # cell(1,1).value表示单元格A1的值
    i = i + 1

wb.save(path)  # 保存文件,这一步必须需要,否则文件没保存等于白搞。
print("导出完成!")  # 可以自行编辑程序完成之后的输出内容。
  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值