1、参考博文

https://blog.csdn.net/qq_39295735/article/details/84504848?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control

2、python代码

#!/usr/bin/python3
#-*- coding: utf-8 -*-
 
import urllib.request
import re
import pymysql
 
#记录公司信息的字典,类似C语言的结构体
#字典中的字段包括:company,domain,legal_person,address,email,phone
gCompanyInfo = dict()
 
#伪装爬虫成浏览器
def spider2browser():
    headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    urllib.request.install_opener(opener)
#end of spider2browser
 
#处理企业信息的异常字符,如换行符、空格、查不到等等
def getTargetInfo(result):
    if 0 == len(result):
        return '暂无'
    else:
        info = re.sub(r'\n', "", str(result[0]))  #删除换行符
        info = re.sub(r'<br/>', "", info)  #删除多余标签
        info = re.sub(r' ', "", info) # 删除多余空格
        return info
#end of getTargetInfo()
 
#根据公司名字获取企业详细信息
def getCompanyInfo(chinaCompany):
    companyInfo = {'company':chinaCompany, 'legal_person':'暂无', 'domain':'暂无', 'address':'暂无'}
    
    #转化为机器可以识别带中文的网址,编码类型为unicode。只转换汉字部分,不能全部网址进行转换
    company=urllib.parse.quote(chinaCompany)
    firstUrl="https://www.qichacha.com/search?key=" + company
    #print("visit web:"+testUrl)
 
    #获取法人代表的名字
    searchRet=urllib.request.urlopen(firstUrl).read().decode("utf-8", "ignore")
    matchPat='法定代表人.*?>(.*?)</a>'
    bosses = re.compile(matchPat, re.S).findall(searchRet)
    companyInfo['legal_person'] = getTargetInfo(bosses)
 
    #爬取第一个页面,即搜索企业名字,获得访问企业信息的跳转链接
    matchPat='addSearchIndex.*?href="(.*?)" target="_blank" class="ma_h1"'
    nextUrls =  re.compile(matchPat, re.S).findall(searchRet)
    if 0 == len(nextUrls):
        return companyInfo
    nextUrl =  "https://www.qichacha.com" + str(nextUrls[0])
 
    #爬取第二个页面,获取公司官网
    searchRet=urllib.request.urlopen(nextUrl).read().decode("utf-8", "ignore")
    matchPat = 'data-delay="500" rel="nofollow">(.*?)</a> <a onclick'
    urls=re.compile(matchPat, re.S).findall(searchRet)
    companyInfo['domain'] = getTargetInfo(urls)
 
    #获取公司地址
    matchPat='title="查看地址".*?>(.*?)</a>'
    addresses=re.compile(matchPat, re.S).findall(searchRet)
    companyInfo['address'] =getTargetInfo(addresses)
 
    return companyInfo
#end of getCompanyInfo()
 
#将公司的详细信息写入数据库
def writeInfoToDB(cursor, companyInfo):
    sql = "insert into company_info(company,domain,legal_person,address) values(%s, %s, %s, %s)"
    val = (companyInfo['company'], companyInfo['domain'], companyInfo['legal_person'],companyInfo['address'])
    try:       
        cursor.execute(sql, val)
        db.commit()
        print("Info: 记录公司 %s 成功" % companyInfo['company'])
    except Exception as err:
        db.rollback()
        print("Error: 记录公司 %s 失败" % companyInfo['company'])
        print(err)
    
#end of writeInfoToDB()
    
#=========主流程从这里开始=========#
#从数据库中将所有的企业名单读取出来
db = pymysql.connect("139.159.xxx.xxx","数据库用户名","密码","数据库")
cursor = db.cursor()
cursor.execute("select `company` from `company_list`")
companyList = cursor.fetchall()
 
#伪装爬虫为浏览器
spider2browser()
 
#将所有公司的信息从企查查网址获取,并保存到数据库中
for row in companyList:
    companyInfo = getCompanyInfo(row[0])
    writeInfoToDB(cursor, companyInfo)

3、数据库结果

Python爬虫获取企查查公开的企业信息相关推荐

  1. 【mysql数据库】通过python 3.7 爬虫获取企查查公开的企业信息,并记录到数据库

    1.爬虫的思路参考这篇博文 https://mp.csdn.net/postedit/83628587 2.数据库保存截图如下 3.python代码如下 #!/usr/bin/python3 #-*- ...

  2. python爬虫从企查查获取企业信息-手工绕开企查查的登录验证

    想要从企查查爬取企业信息,如果没有登录直接检索,邮箱.电话都被隐藏了: 上面的图片是之前截的图,今天再次检索,好像又可见了: 不过单击查看详情时,还是会被隐藏: 不管怎么说,只要企查查想限制登录,总会 ...

  3. java 调用企查查API查询企业信息

    效果图: 首先需要设置token,API中要求token的格式为key+Timespan+SecretKey组成的32位md5加密的大写字符串,所以我也附赠了MD5加密的工具类.token要放在htt ...

  4. 用Python爬虫获取百度企业信用中企业基本信息!太厉害了!

    一.背景 希望根据企业名称查询其经纬度,所在的省份.城市等信息.直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获取企业完整的地理位置,这样传给API后结果会更加准确.百度 ...

  5. Python3爬取企查查网站的企业年表并存入MySQL

    Python3爬取企查查网站的企业年表并存入MySQL 本篇博客的主要内容:爬取企查查网站的企业年报数据,存到mysql中,为了方便记录,分成两个模块来写: 第一个模块是爬取数据+解析数据,并将数据存 ...

  6. 企查查app新增企业数据抓取

    企查查每日新增企业数据抓取 尚未完成的工作: 需要自行抓包获取设备id,appid,sign等等 sign和时间戳保持一致即可 把所有的数据库.redis配置 无法自动登录,账号需要独立 redis数 ...

  7. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

  8. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

    Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...

  9. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

最新文章

  1. 使用wkwebview后,页面返回不刷新的问题
  2. ssh项目放到服务器上出现404,项目运行一段时间,后台程序无法启动,404错误
  3. OpenCV背景扣除Background subtraction的实例(附完整代码)
  4. 链接分析算法系列-机器学习排序
  5. 前端学习(1687):前端系列javascript基础面试前言
  6. Expression Blend学习四控件-按钮
  7. 一周第三次课(10月18日)
  8. C# 正则表达式大全
  9. 台安PLC通过手机热点远程在线模拟,远程编程,远程调试
  10. 微分方程模型——偏微分方程
  11. linux下FFmpeg编译和解决nasm/yasm not found or too old错误
  12. 织梦列表页list标签调用支持flag属性方法
  13. APS Interview - Operating System
  14. 中等职业学校计算机类教学用书,中等职业学校计算机技术专业教学用书:二维动画制作(Flash CS3)...
  15. 因融资失败倒闭 五分钟倒在黎明前五分钟
  16. Daily Scrum Meeting 11.08
  17. 装了就不舍得卸载,4款电脑必装软件,功能实用又免费
  18. 固态硬盘和机械硬盘的区别
  19. 英语四级和计算机二级考试冲突吗,大学必须过英语四级吗?必须过计算机二级吗?...
  20. 五个最好的DVD播放器下载

热门文章

  1. vce数学考试能用计算机,准备VCE数学考试的诀窍,从一本出色的笔记开始!
  2. 使用AD中的自带的元件库问题处理
  3. JAVA 操作 properties 配置文件
  4. 解决iphone的短信中心号码设置错误的方案
  5. 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)有什么区别?
  6. java 鼠标动眼睛动_java实现眼睛跟着鼠标转动的跟踪眼代码
  7. 万年历开源 android,简单干净的万年历
  8. ▽算符在球坐标系_球坐标系中的角动量算符
  9. 什么是m叉树_品读 | 记忆深处那些树
  10. 下载typora beta版本