爬取天眼查数据 附代码

2023-10-26

摘要: 一、常规抓包分析 比如要爬取企业注册信息查询_企业工商信息查询_企业信用信息查询平台_发现人与企业关系的平台-天眼查该页面的基础信息。 通过火狐浏览器抓包,可以发现,所要数据都在下图的json文件里 查看其请求 伪装成浏览器爬取该文件: 伪装成浏览器爬取该文件: import requests header = { 'Host': 'www.

一、常规抓包分析

比如要爬取企业注册信息查询_企业工商信息查询_企业信用信息查询平台_发现人与企业关系的平台-天眼查该页面的基础信息。

通过火狐浏览器抓包,可以发现,所要数据都在下图的json文件里

v2-34b3a29c10ec32f9e596b03da5efd10f_b.pn

查看其请求

v2-8d3ea70ff1a4d9b20fbda02e37b9127a_b.pn

伪装成浏览器爬取该文件:

伪装成浏览器爬取该文件:

import requests
header = {
'Host': 'www.tianyancha.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Tyc-From': 'normal',
'CheckError': 'check',
'Connection': 'keep-alive',
'Referer': 'http://www.tianyancha.com/company/2310290454',
'Cache-Control': 'max-age=0'
,
'Cookie': '_pk_id.1.e431=5379bad64f3da16d.1486514958.5.1486693046.1486691373.; Hm_lvt_e92c8d65d92d534b0fc290df538b4758=1486514958,1486622933,1486624041,1486691373; _pk_ref.1.e431=%5B%22%22%2C%22%22%2C1486691373%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D95IaKh1pPrhNKUe5nDCqk7dJI9ANLBzo-1Vjgi6C0VTd9DxNkSEdsM5XaEC4KQPO%26wd%3D%26eqid%3Dfffe7d7e0002e01b00000004589c1177%22%5D; aliyungf_tc=AQAAAJ5EMGl/qA4AKfa/PDGqCmJwn9o7; TYCID=d6e00ec9b9ee485d84f4610c46d5890f; tnet=60.191.246.41; _pk_ses.1.e431=*; Hm_lpvt_e92c8d65d92d534b0fc290df538b4758=1486693045; token=d29804c0b88842c3bb10c4bc1d48bc80; _utm=55dbdbb204a74224b2b084bfe674a767; RTYCID=ce8562e4e131467d881053bab1a62c3a'
}
r = requests.get('http://www.tianyancha.com/company/2310290454.json', headers=header)
print(r.text)
print(r.status_code)

返回结果如下:

v2-5a8f17306e41b7b3233bb289939c0ab1_b.pn

状态码为403,常规爬取不成功。考虑下面一种方式。

二、使用selenium+PHANTOMJS获取数据

首先下载phantomjs到本地,并将phantomjs.exe存放在系统环境变量所在目录下(本人讲该文件放置在D:/Anaconda2/路径下)。

为phantomjs添加useragent信息(经测试,不添加useragent信息爬取到的是错乱的信息):

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
    )
driver = webdriver.PhantomJS(executable_path='D:/Anaconda2/phantomjs.exe', desired_capabilities=dcap)

获取网页源代码:

driver.get('http://www.tianyancha.com/company/2310290454')
#等待5秒,更据动态网页加载耗时自定义
time.sleep(5)
# 获取网页内容
content = driver.page_source.encode('utf-8')
driver.close()
print(content)

对照网页,爬取的源代码信息正确,接下去解析代码,获取对应的信息。

简单写了下获取基础信息的代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
import time
from bs4 import BeautifulSoup
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

def driver_open():
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
    )
    driver = webdriver.PhantomJS(executable_path='D:/Anaconda2/phantomjs.exe', desired_capabilities=dcap)
return driver
def get_content(driver,url):
    driver.get(url)
#等待5秒,更据动态网页加载耗时自定义
    time.sleep(5)
# 获取网页内容
    content = driver.page_source.encode('utf-8')
    driver.close()
    soup = BeautifulSoup(content, 'lxml')
return soup

def get_basic_info(soup):
    company = soup.select('div.company_info_text > p.ng-binding')[0].text.replace("\n","").replace(" ","")
    fddbr = soup.select('.td-legalPersonName-value > p > a')[0].text
    zczb = soup.select('.td-regCapital-value > p ')[0].text
    zt = soup.select('.td-regStatus-value > p ')[0].text.replace("\n","").replace(" ","")
    zcrq = soup.select('.td-regTime-value > p ')[0].text
    basics = soup.select('.basic-td > .c8 > .ng-binding ')
    hy = basics[0].text
    qyzch = basics[1].text
    qylx = basics[2].text
    zzjgdm = basics[3].text
    yyqx = basics[4].text
    djjg = basics[5].text
    hzrq = basics[6].text
    tyshxydm = basics[7].text
    zcdz = basics[8].text
    jyfw = basics[9].text
print u'公司名称:'+company
print u'法定代表人:'+fddbr
print u'注册资本:'+zczb
print u'公司状态:'+zt
print u'注册日期:'+zcrq
# print basics
print u'行业:'+hy
print u'工商注册号:'+qyzch
print u'企业类型:'+qylx
print u'组织机构代码:'+zzjgdm
print u'营业期限:'+yyqx
print u'登记机构:'+djjg
print u'核准日期:'+hzrq
print u'统一社会信用代码:'+tyshxydm
print u'注册地址:'+zcdz
print u'经营范围:'+jyfw

def get_gg_info(soup):
    ggpersons = soup.find_all(attrs={"event-name": "company-detail-staff"})
    ggnames = soup.select('table.staff-table > tbody > tr > td.ng-scope > span.ng-binding')
# print(len(gg))
for i in range(len(ggpersons)):
        ggperson = ggpersons[i].text
        ggname = ggnames[i].text
print (ggperson+" "+ggname)

def get_gd_info(soup):
    tzfs = soup.find_all(attrs={"event-name": "company-detail-investment"})
for i in range(len(tzfs)):
        tzf_split = tzfs[i].text.replace("\n","").split()
        tzf = ' '.j
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬取天眼查数据 附代码 的相关文章

随机推荐

  • 各类数据库随机查询的方法

    1 mysql随机查询 select from 表名 order by rand limit 随机查询的数量 2 sql server随机查询 select top 随机查询的数量 from 表名 order by newid 3 orac
  • 1124:成语接龙 dfs+一维数组保存结果

    题目描述 小明在玩成语接龙的游戏 成语接龙的规则是 如果成语A的最后一个汉字与成语B的第一个汉字相同 那么成语B就可以接到成语A的后面 小明现在手上有一本成语词典 每次他都得花费一定时间来从当前的成语查到下一个可以接在后面的成语 现在给你一
  • transformer系列2---transformer架构详细解析

    transformer详细解析 Encoder 1 输入 1 1 Embedding 词嵌入 1 1 1 Embedding 定义 1 1 2 几种编码方式对比 1 1 3 实现代码 1 2 位置编码 1 2 1 使用位置编码原因 1 2
  • System、Math、BigInteger和BigDecimal

    一 System System类代表系统 系统级的很多属性和控制方法都放置在该类的内部 该类位于java lang包 由于该类的构造器是private的 所以无法创建该类的对象 也就是无法实例化该类 其内部的成员变量和成员方法都是stati
  • Python学习心得记录

    文章目录 MongoChef工具的使用 查询记录 删除记录 获取当前日期 地板除 去掉空格 for循环 文件清空 split函数 明确需求 py中执行py os system execfile import PhantomJS过时问题 打印
  • 【数组】- 如何在C++中把元素插入有序数组?

    数组逆序 数组是C 语言重要的数据结构 对它的一些基本操作要熟练掌握 今天 我们就来讨论 怎么把元素的插入有序数组的问题 案例 题目描述 给你一个整数n和一个数列 数列个数不超过1000 这个数列保证从小到大排列 现要求将这个整数n插入到数
  • 【爬虫】Python使用动态IP,多线程,爬取uncomtrade的数据

    联合国贸易统计数据库UNCOMTRADE是国际海关组织汇总所有成员上报的各自进出口贸易情况的综合信息数据库 是进行国际贸易分析的必不可少的数据来源 联合国贸易统计数据库中提供国际海关组织的多种商品分类标准数据查询 包括HS2002 HS19
  • 最近爆火的超级可爱的猫猫回收站设置教程

    这个回收站图标真的好可爱啊 图标地址 https emlog lanzouj com ixoSF05jp4gf
  • EF 数据库的字段类型为float,C#类型为float时异常,Unable to cast object of type 'System.Double' to type 'System.Single

    数据库的字段 类型 float 代表从 1 79E 308 到 1 79E 308 之间的浮点数字数据 占用8字节 类型 real 代表从 3 40E 38 到 3 40E 38 之间的浮点数字数据 占用4字节 而C 中 类型 double
  • 《C++11标准库》5.1.1Pair

    class pair 可将两个 value视为一个单元 C 标准库内多处用到了这个 class 尤其是容器 map multimap unordered map和 unordered multimap就是使用 pair 来管理其以 key
  • Windows下Nginx的启动、停止等命令

    注意不要直接双击nginx exe 这样会导致修改配置后重启 停止nginx无效 需要手动关闭任务管理器内的所有nginx进程 在nginx exe目录 打开命令行工具 用命令 启动 关闭 重启nginx start nginx 启动ngi
  • 分布式系统SDK端重试策略

    分布式系统SDK端重试策略 1 API 的属性 成功率优先 强调成功率 所以重试的时候 sleep 时间较长 按照指数退避的方式sleep latency优先 强调latency 所以重试的时候 sleep的时间较短 2 重试次数 retr
  • node.js -- koa

    node js koa koa 1 koa介绍 2 koa使用 2 1 Application对象 2 2 上下文content对象常用属性及方法 2 3 中间件 2 4 koa常用中间件 koa router koa static koa
  • LeetCode 0096. Unique Binary Search Trees

    问题简析 给定整数n 有多少个不同的储存1 n的二叉搜索树 二叉搜索树 BST 要求左子树结点都比当前结点小 右子树结点都比当前结点大 思路 动态规划 设f n 为有n个数字时可以构建多少种不同的树 则起始状态为 f 0 1 f 1 1 f
  • apt-get命令详解(超详细)

    原文链接 apt get命令详解 超详细 迎面暖风的博客 CSDN博客 apt get 参数 h 帮助文件 q 输出到日志 无进展指示 qq 不输出信息 错误除外 d 仅下载 不安装或解压归档文件 s 不实际安装 模拟执行命令 y 在需要确
  • odoo16数据导出报错

    最近做项目 下载了odoo16的最新版 SELECT latest version FROM ir module module WHERE name base 16 0 1 3 导出数据的时候报错 连续装了两台机器都是报这个错误 很明显 这
  • 绿洲显示服务器,最后的绿洲登录不上怎么办 最后的绿洲登录失败解决方法推荐-游侠网...

    最后的绿洲登录不上怎么办 最后的绿洲是一款主打pvp的开放世界生存游戏 下面小编给大家带来了最后的绿洲登录失败解决方法推荐 还不了解的玩家不妨进来看看 最后的绿洲登录失败解决方法推荐 1 服务器并没有关闭 无论显示Oasis offline
  • 【中国电工技术学会主办】2022年能源,电力与电气工程国际研讨会(CoEEPE 2022)

    中国电工技术学会主办 2022年能源 电力与电气工程国际研讨会 CoEEPE 2022 重要信息 会议网址 www coeepe org 会议时间 2022年11月11 13日 召开地点 安徽合肥 合肥滨湖国际会展中心 截稿时间 2022年
  • tab动画 vue_【Vue】关于vue动画,实现tab切换页面时左右滑动效果

    今天要想做一个类似于app切换效果的demo 既点击 这个时 获取相应数据 动画已经加上了 但是不知道怎么才能进行切换 像进入详情页那个 已经有办法解决了 但是tab切换这个却发现无从下手 哪位大神能给提供一下思路吗 或者提供一个方案 de
  • 爬取天眼查数据 附代码

    摘要 一 常规抓包分析 比如要爬取企业注册信息查询 企业工商信息查询 企业信用信息查询平台 发现人与企业关系的平台 天眼查该页面的基础信息 通过火狐浏览器抓包 可以发现 所要数据都在下图的json文件里 查看其请求 伪装成浏览器爬取该文件