二战企*查*查-企业-数-据爬虫
近期收到上头新的需求,又是企业数据,公司电话地址这些,so我又来了
需求:
根据已知企业名称,爬取相应的企业名称、企业状态、法人代表、注册资本、成立日期、联系方式、地址
知识点涉及:
1、requests + bs4的登录爬虫实战
2、openpyxl 对excel操作练习
看出来没?不登录爬取不到手机号,所以下面的爬虫是在已登录情况下实现(很简单,保存登录后的cookie)
===============================================================================================
单账号 插曲:我的号在爬取到2500条数据后被封了QAQ,此处给各位分享一波,经过测试每条爬取间隔设置3,-5秒,100条左右会出现滑动验证码需要手动进入浏览器账号内解决,不然程序就卡了,后我把时间调为3-8秒,稳定运行至2500条数据封账号(非永久封,但具体解封时间没算过)
所以爬企查查建议堆个cookie池,几十个账号轮换可以适当减少延时,不叨叨了,该上原码了
# -*- coding: UTF-8 -*-
import random
import time
import re
import requests
from bs4 import BeautifulSoup
from urllib import parse
# 证书忽略
import urllib3
urllib3.disable_warnings()
from openpyxl import load_workbookCOOKIE = ["",
]USER_AGENT = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36','',
]class Spider(object):def __init__(self,key):key = parse.quote(key)self.url = "https://www.qcc.com/search?key={}".format(key)self.headers = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','cache-control': 'max-age=0','referer':'https://www.qcc.com/search?key={}'.format(key), # 插入的为url编码的公司名称'sec-fetch-mode': 'navigate','sec-fetch-site': 'none','sec-fetch-user': '?1','upgrade-insecure-requests': '1','cookie': COOKIE[random.randint(0, 1)], # 数量根据你们存的cookie量定'user-agent': USER_AGENT[random.randint(0, 1)], # 数量根据你们存的useranget定}passdef run(self):response = requests.get(self.url, headers=self.headers, verify=False)html = response.text# print(html)bs = BeautifulSoup(html, "lxml")tr_list = bs.find_all('tr')if len(tr_list) != 0:data_list = []for tr in tr_list:# print(tr)item = {}p = tr.find_all('p')span = tr.find_all('span', attrs={'class': 'm-l'})# 公司名title = tr.find('a', attrs={'class': 'ma_h1'}).get_text()title = ''.join(title)print(title)# print(type(title))item['name'] = titletry:# 状态state = tr.find('span', attrs={'class': 'nstatus text-success-lt m-l-xs'}).get_text()state = ''.join(state)print(state)item['state'] = stateexcept Exception as e:item['state'] = ''# # 法定代表人try:author = tr.find('a', attrs={'class': 'text-primary'}).get_text()author = ''.join(author)print(author)# print type(author)item['people'] = authorexcept Exception as e:author = str(p[0])aaa = re.findall('法定代表人:(.*?)<span', author.replace(' ', ''), re.DOTALL)author = aaa[0].strip()item['people'] = author# # 注册资本money = tr.find('span', attrs={'class': 'm-l'}).get_text()money = ''.join(money)print(money)# print type(money)item['money'] = money# 成立日期date = span[1].get_text()date = ''.join(date)print(date)# print type(date)item['time'] = date# 邮箱电话email = p[1].get_text()email = ''.join(email)email = re.sub(r'n', '', email).strip().replace(' ', '')num = re.findall('电话:.*', email, re.DOTALL)num = num[0].strip()print(num)# print type(num)item['phone'] = ''.join(num)# 地址site = p[2].get_text()site = re.sub(r'n', '', site).strip()print(site)# print type(site)item['add'] = sitedata_list.append(item)breakreturn data_listif __name__ == '__main__':# 打开文件wb = load_workbook(r'E:\python3\Job_Spider\QCC_TYC_Spider\datas_new.xlsx') # 此处修改为你们需要爬取的公司excelws = wb.activedatas = ws['F1913':'F{}'.format(ws.max_row)] # 按行读取excel单列信息aqsj_list = []a = 1913 # 改值控制爬取数据在新excel里的存储位置for cell in datas:for data in cell:print(a)keyword = data.valuespider = Spider(keyword)data_list = spider.run()if data_list:# aqsj_list.append(keyword)# print(data_list)name = data_list[0]['name']state = data_list[0]['state']people = data_list[0]['people']money = data_list[0]['money']timea = data_list[0]['time']phone = data_list[0]['phone']add = data_list[0]['add']wb = load_workbook(r'E:\python3\Job_Spider\QCC_TYC_Spider\cont.xlsx') # 打开另存的excelws = wb.active# 直接根据位置进行赋值ws['A%s'% a] = namews['B%s'% a] = statews['C%s'% a] = peoplews['D%s'% a] = moneyws['E%s'% a] = timeaws['F%s'% a] = phonews['G%s'% a] = add# 保存文件wb.save(r'E:\python3\Job_Spider\QCC_TYC_Spider\cont.xlsx')# breaka+=1time.sleep(random.randint(3,8))
代码拉下来需要修改的地方有 COOKIE(换成你们自己的cookie) ,USER_AGENT(多加几个总是好的,省的人家以为你一台电脑好几个人用),还有尾部打开的第一个文件为需要爬取的企业excel(可以自己手动创建一个.xlsx,代码内格式为一行一个公司名), 第二个打开的文件为爬取后的数据存储(需要新建一个.xlsx),最后a = 1913(意为存储在文件二的A1913),F1913(读取文件一的F1913格数据)
好了我该下班了~~~
二战企*查*查-企业-数-据爬虫相关推荐
- 最新2018我破解了天某查 企某查 启某宝 企某猫和全国源站工商企业大数据爬虫系统
Python爬虫-2018年-我破解天某查和启某宝企业数据爬虫--破解反爬技术那些事情 最近在自己用python+mongdb写了一套分布式多线程的天某查爬虫系统,实现了对天某查整个网站的全部数据各种 ...
- 《2022中国企业数智化转型升级服务全景图/产业图谱2.0版》重磅发布
数据猿出品 本次"数据猿年度金猿策划活动--<2022中国企业数智化转型升级服务全景图/产业图谱2.0版>"为2022年度图谱版本的升级更新版,本年度内还将再次迭代推出 ...
- 发票专用驱动sjz_“数智企业财税云领”增值税专用发票主题交流会圆满举办| 从专票电子化开始 开启企业数智化之旅...
2020年11月12日,由用友公司主办的"数智企业·财税云领--YonSuite助力成长型企业专票电子化变革"主题交流会在大连奥利加尔大酒店成功举办.用友高级咨询专家.用友战略合作 ...
- 阿里云峰会 | 深化城市计算场景能力,为企业数智化建设提供助推力
在2020阿里云峰会上,阿里云边缘计算技术负责人杨敬宇表示:边缘计算将成为企业数智化进程中重要助推力,而构建城市计算是阿里云边缘计算的核心方向.在会上,杨敬宇还首次公开了智慧高速.云游戏.驾驶辅助等基 ...
- 中台“不火”了,企业数智转型如何破圈?
作者 | 孙溥茜 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着数字网络的发展,社会生产力大幅提高,催生出大量新生业态,社会全面步入工业4.0时代.传统企业在全 ...
- 企业数智化升级的四个“拦路虎”
""2021年终大型金猿主题策划活动"已正式开启,欢迎报名参与:榜单奖项+产业图谱+行业报告+线下论坛|或点击文末"阅读原文"链接后提交活动意向报名表 ...
- 《2021中国企业数智化转型升级发展研究报告》正式发布丨数据猿上海大数据联盟...
"[报告下载]后台回复关键词"2021数智化报告"可免费下载50页完整高清版<2021中国企业数智化转型升级发展研究报告> 数据智能产业创新服务媒体 --聚焦 ...
- 薪火相传 点亮企业数智化舞台—— CDEC2021中国数字智能生态大会西安收官
从3月开始,这场席卷全国的数字化产业的盛会从北京出发,一路行走大江南北,为多个区域搭建厂商对接平台.赋能发展数字经济,共建数智时代新生态.今天,大会来到西北重镇,在现代科技与历史文明的十字路口--西安 ...
- 预告|2022 星策 Summit 企业数智化转型论坛议程公布!
Start Together, Star Together ,一起开始,一起闪耀!由星策开源社区主办.思否社区协办的首届" 星策Summit " 即将来袭!本次大会面向企业管理层. ...
最新文章
- js中使用进行字符串传参
- 手工画设计模式的类图
- 选数(洛谷P1036题题解,Java语言描述)
- iPhone 14进入代工试产阶段:首款打孔屏iPhone要来了
- [XJOI]noip44 T3还有这种操作
- v8的垃圾回收机制(二)
- 关于区块链的解读和简单Python实现
- Linux使文件变成二进制,linux 二进制文件显示方法
- matlab 元胞数组
- PIC16F887 单片机 接线 实物器件说明 原理
- 机器学习提高准确率的一些思路和技巧
- 使用LaTeX表示数学方程(附源码)
- 地理信息系统专业考研 GIS专业考研 名词解释大全[转]
- 信息技术学考 这题不会做!!
- 黄金矿工两百行基于Easyx
- 转来的,我每次看都有收获
- NO.001-2018.02.06《木兰花·拟古决绝词柬友》清代:纳兰性德
- fcpx如何用光流法_5分钟掌握FCPX所有剪辑技巧
- Flutter Layout之创建自适应应用程序
- 试用期工作总结(官方版)