因为制作B2b网站需要,需要入库企业信息数据。所以目光锁定企查查数据,废话不多说,开干!

  1. #-*- coding-8 -*-
  2. import requests
  3. import lxml
  4. import sys
  5. from bs4 import BeautifulSoup
  6. import xlwt
  7. import time
  8. import urllib
  9.  
  10. def craw(url,key_word,x):
  11.     User_Agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0'
  12. #    if x == 0:
  13. #        re = 'http://www.qichacha.com/search?key='+key_word
  14. #    else:
  15. #        re = 'https://www.qichacha.com/search?key={}#p:{}&'.format(key_word,x-1)
  16.     re = r'https://www.qichacha.com/search?key='+key_word
  17.     headers = {
  18.             'Host':'www.qichacha.com',
  19.             'Connection': 'keep-alive',
  20.             'Accept':r'text/html, */*; q=0.01',
  21.             'X-Requested-With': 'XMLHttpRequest',
  22.             'User-Agent':r'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
  23.             'Referer': re,
  24.             'Accept-Encoding':'gzip, deflate, br',
  25.             'Accept-Language':'zh-CN,zh;q=0.9',
  26.             'Cookie':r'xxxxxxxxx这里换成你的cookiexxxxxxxx这里换成你的cookiexxxxxxxxx这里换成你的cookiexxxxxxx',
  27.             }
  28.  
  29.     try:
  30.         response = requests.get(url,headers = headers)
  31.         if response.status_code != 200:
  32.             response.encoding = 'utf-8'
  33.             print(response.status_code)
  34.             print('ERROR')   
  35.         soup = BeautifulSoup(response.text,'lxml')
  36.     except Exception:
  37.         print('请求都不让,这企查查是想逆天吗???')
  38.     try:
  39.         com_all_info = soup.find_all(class_='m_srchList')[0].tbody
  40.         com_all_info_array = com_all_info.select('tr')
  41.         print('开始爬取数据,请勿打开excel')
  42.         for i in range(0,len(com_all_info_array)):
  43. #            try:
  44.                 temp_g_name = com_all_info_array[i].select('td')[2].select('.ma_h1')[0].text    #获取公司名
  45.                 temp_g_tag = com_all_info_array[i].select('td')[2].select('.search-tags')[0].text    #获取公司标签
  46.                 temp_r_name = com_all_info_array[i].select('td')[2].select('p')[0].a.text    #获取法人名
  47.                 temp_g_money = com_all_info_array[i].select('td')[2].select('p')[0].select('span')[0].text.strip('注册资本:')    #获取注册资本
  48.                 temp_g_date = com_all_info_array[i].select('td')[2].select('p')[0].select('span')[1].text.strip('成立日期:')    #获取公司注册时间
  49.                 temp_r_email = com_all_info_array[i].select('td')[2].select('p')[1].text.split('\n')[1].strip().strip('邮箱:')    #获取法人Email
  50.                 temp_r_phone = com_all_info_array[i].select('td')[2].select('p')[1].select('.m-l')[0].text.strip('电话:')    #获取法人手机号
  51.                 temp_g_addr = com_all_info_array[i].select('td')[2].select('p')[2].text.strip().strip('地址:')    #获取公司地址
  52.                 temp_g_state = com_all_info_array[i].select('td')[3].select('.nstatus.text-success-lt.m-l-xs')[0].text.strip()  #获取公司状态
  53.                  
  54.                 g_name_list.append(temp_g_name)
  55.                 g_tag_list.append(temp_g_tag)
  56.                 r_name_list.append(temp_r_name)
  57.                 g_money_list.append(temp_g_money)
  58.                 g_date_list.append(temp_g_date)
  59.                 r_email_list.append(temp_r_email)
  60.                 r_phone_list.append(temp_r_phone)
  61.                 g_addr_list.append(temp_g_addr)
  62.                 g_state_list.append(temp_g_state)
  63.                  
  64. #            except Exception:
  65. #                print('错误!')
  66.     except Exception:
  67.         print('好像被拒绝访问了呢...请稍后再试叭...')
  68.          
  69. if __name__ == '__main__':
  70.     global g_name_list
  71.     global g_tag_list
  72.     global r_name_list
  73.     global g_money_list
  74.     global g_date_list
  75.     global r_email_list
  76.     global r_phone_list
  77.     global g_addr_list
  78.     global g_state_list
  79.      
  80.     g_name_list=[]
  81.     g_tag_list=[]
  82.     r_name_list=[]
  83.     g_money_list=[]
  84.     g_date_list=[]
  85.     r_email_list=[]
  86.     r_phone_list=[]
  87.     g_addr_list=[]
  88.     g_state_list=[]
  89.  
  90.     key_word = input('请输入您想搜索的关键词:')
  91.     num = int(input('请输入您想检索的次数:'))+1
  92.     sleep_time = int(input('请输入每次检索延时的秒数:'))
  93.      
  94.     key_word = urllib.parse.quote(key_word)
  95.      
  96.     print('正在搜索,请稍后')
  97.      
  98.     for x in range(1,num):
  99.         url = r'https://www.qichacha.com/search_index?key={}&ajaxflag=1&p={}&'.format(key_word,x)
  100.         s1 = craw(url,key_word,x)
  101.         time.sleep(sleep_time)
  102.     workbook = xlwt.Workbook()
  103.     #创建sheet对象,新建sheet
  104.     sheet1 = workbook.add_sheet('企查查数据', cell_overwrite_ok=True)
  105.     #---设置excel样式---
  106.     #初始化样式
  107.     style = xlwt.XFStyle()
  108.     #创建字体样式
  109.     font = xlwt.Font()
  110.     font.name = '仿宋'
  111. #    font.bold = True #加粗
  112.     #设置字体
  113.     style.font = font
  114.     #使用样式写入数据
  115.     print('正在存储数据,请勿打开excel')
  116.     #向sheet中写入数据
  117.     name_list = ['公司名字','公司标签','法定法人','注册资本','成立日期','法人邮箱','法人电话','公司地址','公司状态']
  118.     for cc in range(0,len(name_list)):
  119.         sheet1.write(0,cc,name_list[cc],style)
  120.     for i in range(0,len(g_name_list)):
  121.         print(g_name_list[i])
  122.         sheet1.write(i+1,0,g_name_list[i],style)#公司名字
  123.         sheet1.write(i+1,1,g_tag_list[i],style)#公司标签
  124.         sheet1.write(i+1,2,r_name_list[i],style)#法定法人
  125.         sheet1.write(i+1,3,g_money_list[i],style)#注册资本
  126.         sheet1.write(i+1,4,g_date_list[i],style)#成立日期
  127.         sheet1.write(i+1,5,r_email_list[i],style)#法人邮箱
  128.         sheet1.write(i+1,6,r_phone_list[i],style)#法人电话
  129.         sheet1.write(i+1,7,g_addr_list[i],style)#公司地址
  130.         sheet1.write(i+1,8,g_state_list[i],style)#公司状态
  131.     #保存excel文件,有同名的直接覆盖
  132.     workbook.save(r"D:\wyy-qcc-"+time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) +".xls")
  133.     print('保存完毕~')

  

Python爬虫爬企查查数据的更多相关文章

  1. python爬虫爬取天气数据并图形化显示

    前言 使用python进行网页数据的爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该 ...

  2. python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.只要浏览器能够做的事情,原则上,爬虫都能够做到. 2 ...

  3. 使用python爬虫爬取股票数据

    前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...

  4. python爬虫----爬取阿里数据银行websocket接口

    业务需求:爬取阿里品牌数据银行的自定义模块==>>>人群透视==>>>查看报告==>>数据 发现:数据通过websocket接口传递,此类型接口的详细理 ...

  5. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  6. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  7. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  8. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  9. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

随机推荐

  1. 在Django中显示操作数据库的语句

    需要在配置中加上这个 LOGGING = { 'version':1, 'disable_existing_loggers':False, 'handlers':{ 'console':{ 'leve ...

  2. JS系列:函数function

    ### 函数 function > 在js中函数就是一个方法(一个功能体)基于这个函数,一般是为了实现某个功能. ``` var total =10; total+=10; total=tota ...

  3. 翻书shader

    //把下面的shader挂载到plane上,调节_Angle Shader "Unlit/PageTurning"{ Properties { _Color ("Colo ...

  4. POJ 1321 棋盘问题(C)回溯

    Emmm,我又来 POJ 了,这题感觉比上次做的简单点.类似皇后问题.但是稍微做了一点变形,比如棋子数量是不定的.棋盘形状不在是方形等等. 题目链接:POJ 1321 棋盘问题 解题思路 基本思路:从 ...

  5. java知识精要(二)

    java知识精要(一) 集合 Iterable v.s. Iterator 两者都是接口,在Collection继承的是Iterable. Iterable表达了集合具备迭代访问的能力,而Iterat ...

  6. Go语言【开发】加载JSON配置文件

    JSON配置加载 辅助网址,JSON转结构体对应 http://json2struct.mervine.net/ 从JSON文件中加载配置到全局变量中 配置文件  config.json { &quo ...

  7. hive工作中的一些优化策略

    1.hive抓取策略     hive.fetch.task.conversion = more/none     more不走mr,none走mr   2.explain 显示执行计划   3.设置 ...

  8. Django使用distinct报错:DISTINCT ON fields is not supported by this database backend

    具体错误提示是:django.db.utils.NotSupportedError: DISTINCT ON fields is not supported by this database back ...

  9. 认证授权-学习笔记2-OpenId Connect

    简介 简单来说:OIDC是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0.它在OAuth2上构建了一个身份层,是一个基于OA ...

  10. DevExpress中GridColumnCollection实现父子表数据绑定

    绑定数据: 父表: DataTable _parent = _dvFlt.ToTable().Copy(); 子表: DataTable _child = _dvLog.ToTable().Copy( ...