前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于Python爬虫数据分析挖掘 ,作者:李运辰

根据输入的公司名称来爬取企查查网站中公司的详细信息

  • 1、获取headers
  • 2、登录成功后,可根据输入的公司名称进行查询操作,得到所需要的内容。
  • 3、将获取到的文本进行文本特殊化处理,并将其汇总成一个dataframe,方便后面保存为csv
  • 4、输入公司名称
  • 5、最后执行此代码,查询companys列表中所有公司名称的详细信息并保存为csv。

1、获取headers

1、进入企查查官网进行注册并登录。
2、然后按F12弹出开发者工具,点击Network,然后你会看到企查查这个网址,点击一下

然后可以找到我们需要复制的header,这是非常关键的步骤,切记这个header是自己注册之后登录成功所获取的header,这样方便后面保存一次之后就可以在一定时间内无限访问网址进行查询的操作。

from bs4 import BeautifulSoup
import requests
import time# 保持会话
# 新建一个session对象
sess = requests.session()# 添加headers(header为自己登录的企查查网址,输入账号密码登录之后所显示的header,此代码的上方介绍了获取方法)
afterLogin_headers = {'User-Agent': '此代码上方介绍了获取的方法'}# post请求(代表着登录行为,登录一次即可保存,方便后面执行查询指令)
login = {'user':'自己注册的账号','password':'密码'}
sess.post('https://www.qcc.com',data=login,headers=afterLogin_headers)

整段代码的含义为:伪装成用户进行登录行为(返回200状态码代表着登录成功)。

2、登录成功后,可根据输入的公司名称进行查询操作,得到所需要的内容。

def get_company_message(company):# 获取查询到的网页内容(全部)search = sess.get('https://www.qcc.com/search?key={}'.format(company),headers=afterLogin_headers,timeout=10)search.raise_for_status()search.encoding = 'utf-8' #linux utf-8soup = BeautifulSoup(search.text,features="html.parser")href = soup.find_all('a',{'class': 'title'})[0].get('href')time.sleep(4)# 获取查询到的网页内容(全部)details = sess.get(href,headers=afterLogin_headers,timeout=10)details.raise_for_status()details.encoding = 'utf-8' #linux utf-8details_soup = BeautifulSoup(details.text,features="html.parser")message = details_soup.texttime.sleep(2)return message

上面的代码代表着执行了两个步骤。

  • ①查询某公司
  • ②点击进入第一位搜索结果的新网站,并返回该网址的文本内容。

3、将获取到的文本进行文本特殊化处理,并将其汇总成一个dataframe,方便后面保存为csv

import pandas as pddef message_to_df(message,company):list_companys = []Registration_status = []Date_of_Establishment = []registered_capital = []contributed_capital = []Approved_date = []Unified_social_credit_code = []Organization_Code = []companyNo = []Taxpayer_Identification_Number = []sub_Industry = []enterprise_type = []Business_Term = []Registration_Authority = []staff_size = []Number_of_participants = []sub_area = []company_adress = []Business_Scope = []list_companys.append(company)Registration_status.append(message.split('登记状态')[1].split('\n')[1].split('成立日期')[0].replace(' ',''))Date_of_Establishment.append(message.split('成立日期')[1].split('\n')[1].replace(' ',''))registered_capital.append(message.split('注册资本')[1].split('人民币')[0].replace(' ',''))contributed_capital.append(message.split('实缴资本')[1].split('人民币')[0].replace(' ',''))Approved_date.append(message.split('核准日期')[1].split('\n')[1].replace(' ',''))try:credit = message.split('统一社会信用代码')[1].split('\n')[1].replace(' ','')Unified_social_credit_code.append(credit)except:credit = message.split('统一社会信用代码')[3].split('\n')[1].replace(' ','')Unified_social_credit_code.append(credit)Organization_Code.append(message.split('组织机构代码')[1].split('\n')[1].replace(' ',''))companyNo.append(message.split('工商注册号')[1].split('\n')[1].replace(' ',''))Taxpayer_Identification_Number.append(message.split('纳税人识别号')[1].split('\n')[1].replace(' ',''))try:sub = message.split('所属行业')[1].split('\n')[1].replace(' ','')sub_Industry.append(sub)except:sub = message.split('所属行业')[1].split('为')[1].split(',')[0]sub_Industry.append(sub)enterprise_type.append(message.split('企业类型')[1].split('\n')[1].replace(' ',''))Business_Term.append(message.split('营业期限')[1].split('登记机关')[0].split('\n')[-1].replace(' ',''))Registration_Authority.append(message.split('登记机关')[1].split('\n')[1].replace(' ',''))staff_size.append(message.split('人员规模')[1].split('人')[0].split('\n')[-1].replace(' ',''))Number_of_participants.append(message.split('参保人数')[1].split('所属地区')[0].replace(' ','').split('\n')[2])sub_area.append(message.split('所属地区')[1].split('\n')[1].replace(' ',''))try:adress = message.split('经营范围')[0].split('企业地址')[1].split('查看地图')[0].split('\n')[2].replace(' ','')company_adress.append(adress)except:adress = message.split('经营范围')[1].split('企业地址')[1].split()[0]company_adress.append(adress)Business_Scope.append(message.split('经营范围')[1].split('\n')[1].replace(' ',''))df = pd.DataFrame({'公司':company,\'登记状态':Registration_status,\'成立日期':Date_of_Establishment,\'注册资本':registered_capital,\'实缴资本':contributed_capital,\'核准日期':Approved_date,\'统一社会信用代码':Unified_social_credit_code,\'组织机构代码':Organization_Code,\'工商注册号':companyNo,\'纳税人识别号':Taxpayer_Identification_Number,\'所属行业':sub_Industry,\'企业类型':enterprise_type,\'营业期限':Business_Term,\'登记机关':Registration_Authority,\'人员规模':staff_size,\'参保人数':Number_of_participants,\'所属地区':sub_area,\'企业地址':company_adress,\'经营范围':Business_Scope})return df

这段代码是对获取到的文本内容进行文本识别处理,只能处理大部分的内容,可能会有极个别的是空值,大家有兴趣可以自己重写。

4、输入公司名称

这里只是写个案例,所以随便写了个列表,一般跑自己代码的是读取自己的csv文件关于公司名称的那一列,然后转为列表)

# 测试所用
companys = ['深圳市腾讯计算机系统有限公司','阿里巴巴(中国)有限公司']# 实际所用
# df_companys = pd.read_csv('自己目录的绝对路径/某某.csv')
# companys = df_companys['公司名称'].tolist()

5、最后执行此代码,查询companys列表中所有公司名称的详细信息并保存为csv。

for company in companys:try:messages = get_company_message(company)except:passelse:df = message_to_df(messages,company)if(company==companys[0]):df.to_csv('自己目录的绝对路径/某某.csv',index=False,header=True)else:df.to_csv('自己目录的绝对路径/某某.csv',mode='a+',index=False,header=False)time.sleep(1)

至此,就可以得到这两家公司的一些详细信息。

ps:如果大家在 soup.find_all(‘a’,{‘class’: ‘title’})[0].get(‘href’)这里遇到点错误,可能是天眼查那边更新了网页代码,大家可以根据这个操作来更新代码。

①按F12进入开发者调试页面

②就点击“深圳市腾讯计算机系统有限公司”这个点击操作而言,右击,然后选择“检查”选项,然后就可以看到开发者调试页面那里也自动跳转到了相关的位置。

③我们可以看到,这是一个a标签,class为title的html代码,所以,如果报错,可根据这个操作更换。比如,class改为了company_title,那代码也可对应的改为:soup.find_all(‘a’,{‘class’: ‘company_title’})[0].get(‘href’)

最后,大家需要注意的是,爬取的时候需要适当的设置一下睡眠时间,不然会被检测到是爬虫机器人在操作,可能会弹出弹窗让你验证,这样会导致循环被中断。第二个就是某个时间段爬取量尽量不要太大,不然也是会被检测到的。

此处贴上完整代码,大家可参考着学习BeautifuSoup的妙用哦。

from bs4 import BeautifulSoup
import requests
import time
# 保持会话
# 新建一个session对象
sess = requests.session()# 添加headers(header为自己登录的企查查网址,输入账号密码登录之后所显示的header,此代码的上方介绍了获取方法)
afterLogin_headers = {'User-Agent': '此代码上方介绍了获取的方法'}# post请求(代表着登录行为,登录一次即可保存,方便后面执行查询指令)
login = {'user':'自己注册的账号','password':'密码'}
sess.post('https://www.qcc.com',data=login,headers=afterLogin_headers)def get_company_message(company):# 获取查询到的网页内容(全部)search = sess.get('https://www.qcc.com/search?key={}'.format(company),headers=afterLogin_headers,timeout=10)search.raise_for_status()search.encoding = 'utf-8' #linux utf-8soup = BeautifulSoup(search.text,features="html.parser")href = soup.find_all('a',{'class': 'title'})[0].get('href')time.sleep(4)# 获取查询到的网页内容(全部)details = sess.get(href,headers=afterLogin_headers,timeout=10)details.raise_for_status()details.encoding = 'utf-8' #linux utf-8details_soup = BeautifulSoup(details.text,features="html.parser")message = details_soup.texttime.sleep(2)return messageimport pandas as pddef message_to_df(message,company):list_companys = []Registration_status = []Date_of_Establishment = []registered_capital = []contributed_capital = []Approved_date = []Unified_social_credit_code = []Organization_Code = []companyNo = []Taxpayer_Identification_Number = []sub_Industry = []enterprise_type = []Business_Term = []Registration_Authority = []staff_size = []Number_of_participants = []sub_area = []company_adress = []Business_Scope = []list_companys.append(company)Registration_status.append(message.split('登记状态')[1].split('\n')[1].split('成立日期')[0].replace(' ',''))Date_of_Establishment.append(message.split('成立日期')[1].split('\n')[1].replace(' ',''))registered_capital.append(message.split('注册资本')[1].split('人民币')[0].replace(' ',''))contributed_capital.append(message.split('实缴资本')[1].split('人民币')[0].replace(' ',''))Approved_date.append(message.split('核准日期')[1].split('\n')[1].replace(' ',''))try:credit = message.split('统一社会信用代码')[1].split('\n')[1].replace(' ','')Unified_social_credit_code.append(credit)except:credit = message.split('统一社会信用代码')[3].split('\n')[1].replace(' ','')Unified_social_credit_code.append(credit)Organization_Code.append(message.split('组织机构代码')[1].split('\n')[1].replace(' ',''))companyNo.append(message.split('工商注册号')[1].split('\n')[1].replace(' ',''))Taxpayer_Identification_Number.append(message.split('纳税人识别号')[1].split('\n')[1].replace(' ',''))try:sub = message.split('所属行业')[1].split('\n')[1].replace(' ','')sub_Industry.append(sub)except:sub = message.split('所属行业')[1].split('为')[1].split(',')[0]sub_Industry.append(sub)enterprise_type.append(message.split('企业类型')[1].split('\n')[1].replace(' ',''))Business_Term.append(message.split('营业期限')[1].split('登记机关')[0].split('\n')[-1].replace(' ',''))Registration_Authority.append(message.split('登记机关')[1].split('\n')[1].replace(' ',''))staff_size.append(message.split('人员规模')[1].split('人')[0].split('\n')[-1].replace(' ',''))Number_of_participants.append(message.split('参保人数')[1].split('所属地区')[0].replace(' ','').split('\n')[2])sub_area.append(message.split('所属地区')[1].split('\n')[1].replace(' ',''))try:adress = message.split('经营范围')[0].split('企业地址')[1].split('查看地图')[0].split('\n')[2].replace(' ','')company_adress.append(adress)except:adress = message.split('经营范围')[1].split('企业地址')[1].split()[0]company_adress.append(adress)Business_Scope.append(message.split('经营范围')[1].split('\n')[1].replace(' ',''))df = pd.DataFrame({'公司':company,\'登记状态':Registration_status,\'成立日期':Date_of_Establishment,\'注册资本':registered_capital,\'实缴资本':contributed_capital,\'核准日期':Approved_date,\'统一社会信用代码':Unified_social_credit_code,\'组织机构代码':Organization_Code,\'工商注册号':companyNo,\'纳税人识别号':Taxpayer_Identification_Number,\'所属行业':sub_Industry,\'企业类型':enterprise_type,\'营业期限':Business_Term,\'登记机关':Registration_Authority,\'人员规模':staff_size,\'参保人数':Number_of_participants,\'所属地区':sub_area,\'企业地址':company_adress,\'经营范围':Business_Scope})return df# 测试所用
companys = ['深圳市腾讯计算机系统有限公司','阿里巴巴(中国)有限公司']# 实际所用
# df_companys = pd.read_csv('自己目录的绝对路径/某某.csv')
# companys = df_companys['公司名称'].tolist()for company in companys:try:messages = get_company_message(company)except:passelse:df = message_to_df(messages,company)if(company==companys[0]):df.to_csv('自己目录的绝对路径/某某.csv',index=False,header=True)else:df.to_csv('自己目录的绝对路径/某某.csv',mode='a+',index=False,header=False)time.sleep(1)

文章源

https://blog.csdn.net/qq_40694671/article/details/110671900

Python爬虫:输入公司名称,爬取企查查网站中的公司信息相关推荐

  1. Python爬虫根据公司名称爬取信息并保存为json格式的txt文件qcc

    使用BeautifulSoup 根据公司名称来爬取企查查网站中该公司的详细信息 本篇文章主要参考了BeautifulSoup 根据输入的公司名称来爬取公司的详细信息 所提供的代码,后续根据自己的需求对 ...

  2. 西山小菜鸟之Scrapy学习笔记---爬取企查查网站公司基本信息

    前言 本文主要采取cookie登录的方式爬取企查查网站的公司的基本信息,后期会继续发布关于爬取企查查网站上的公司的裁判文书信息.链接为:企查查  本文中若存在不详细的地方欢迎各位大神网友提问,若有错误 ...

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

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

  4. python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...

    原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...

  5. 爬取链家网站中的租房信息

    爬取链家网站中的租房信息 信息爬取代码 信息爬取代码 import requests from lxml import etree import pandas as pdwith open('zufa ...

  6. python贴吧爬虫-Python 爬虫练习: 爬取百度贴吧中的图片

    背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...

  7. Python爬虫之路-爬取北、上、广租房信息

    链家网 在实现爬取北.上.广租房信息时,需要使用fake_useragent.asyncio.aiohttp.requests.lxml以及pandas模块. 各模块关键技术如下: 1.fake_us ...

  8. Python爬虫带你爬取美剧网站

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:哲洛不闹 一直有爱看美剧的习惯,一方面锻炼一下英语听力 ...

  9. python爬虫实战:爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了.但是,作为一个宅diao ...

最新文章

  1. 2018/11/29 一个64位操作系统的设计与实现 02 (安装nasm)
  2. Sql中的递归问题-思考与建议
  3. 【2020蓝桥杯】Python组真题解析 - 第十一届蓝桥杯
  4. SQL中CONVERT转化函数的用法[个人推荐]
  5. python查询oracle数据库_python针对Oracle常见查询操作实例分析
  6. 解决xampp启动mysql失败
  7. VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案
  8. 暗黑的字符串---递推公式
  9. 【基础处理】基于matlab语音信号预处理【含Matlab源码 364期】
  10. Nginx面试题及基础
  11. java中符号常量_Java中符号常量
  12. 论如何熟悉HTML与css的方法-孰能生巧第一步:美食网编写(详细代码)
  13. 亚洲杯:艾因月夜,里皮妙手导演逆转
  14. 关于学生管理系统(注册,登录,学生端)
  15. 如何利用网络技术赚钱的
  16. 8421码、5421码、2421码、余3码的学习及转换。
  17. 用php打印出日历_php简单日历函数
  18. 珠宝达人必须知晓的10大宝石产地
  19. 输出集合的所有子集(幂集)-C语言
  20. 65Z5的芯片,65Z5三极管,稳压输出3V的IC资料

热门文章

  1. 那些年用过的时间衰减函数
  2. 侍魂微信第一个服务器,在游戏中,武者大大们来到的第一个地图叫什么名字?...
  3. xshell命令大全编译c语言,Xshell脚本——make命令
  4. 计算机无法识别苹果手机,如何解决电脑无法识别iphone的问题?
  5. 第四章 OAuth2.0规范(史上最详细解释)——获得授权
  6. Docker Linux下安装配置及启动
  7. 学校运动会广播稿计算机,学校运动会广播稿
  8. 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】
  9. 各类游戏对应的服务端架构
  10. Python dict字典基本操作