简介:本文详细介绍了如何通过爬虫技术从天眼查等企业信用信息查询系统中获取企业数据,包括技术选型、反爬机制应对、数据解析与存储等关键环节,助力开发者与数据从业者高效实现企业信息采集。
在商业分析、风险控制和供应链管理中,企业信用信息查询系统(如天眼查、企查查等)已成为核心数据来源。通过爬取企业工商信息、司法风险、经营状况等数据,可为企业决策提供关键支持。然而,这类平台通常设置了严格的反爬机制,如何高效、合规地获取数据成为开发者关注的焦点。本文将以天眼查为例,系统阐述爬虫开发的全流程,涵盖技术选型、反爬策略、数据解析与存储等核心环节。
requests或httpx(异步支持),结合session管理会话以保持登录状态。BeautifulSoup(简单HTML解析)或lxml(高性能),复杂场景可结合pyquery。selenium/playwright模拟浏览器行为,或使用scrapy-splash处理动态渲染页面。asyncio+aiohttp提升并发效率,适合大规模数据采集。示例代码(基础请求):
import requestsfrom fake_useragent import UserAgentua = UserAgent()headers = {'User-Agent': ua.random}url = "https://www.tianyancha.com/company/123456" # 替换为实际企业页response = requests.get(url, headers=headers, timeout=10)if response.status_code == 200:print("请求成功")else:print(f"请求失败,状态码:{response.status_code}")
对于大规模数据采集,建议采用Scrapy+Redis的分布式架构,通过任务队列和去重机制提升效率。关键组件包括:
token、sign等动态生成,难以直接构造。使用高匿名代理(如亮数据、ScraperAPI),结合proxy_pool项目动态管理可用IP。
# 示例:从代理池获取IPfrom proxy_pool import ProxyPoolpool = ProxyPool()proxy = pool.get_proxy()proxies = {"http": f"http://{proxy}", "https": f"https://{proxy}"}
通过selenium加载页面,模拟真实用户操作:
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_argument("--headless") # 无头模式driver = webdriver.Chrome(options=options)driver.get("https://www.tianyancha.com/company/123456")# 模拟滚动页面driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
天眼查的部分数据通过JavaScript动态加载,需分析网络请求或直接调用其API:
playwright等待元素加载完成后再解析。以企业基本信息为例,关键字段包括:
示例解析代码:
from bs4 import BeautifulSouphtml = response.text # 假设已获取页面HTMLsoup = BeautifulSoup(html, "lxml")# 提取企业名称company_name = soup.find("h1", class_="name").text.strip()# 提取工商信息business_info = {}info_items = soup.select(".info-item")for item in info_items:key = item.find("span", class_="label").text.strip()value = item.find("span", class_="value").text.strip()business_info[key] = value
MongoDB存储示例:
from pymongo import MongoClientclient = MongoClient("mongodb://localhost:27017/")db = client["tianyancha_data"]collection = db["companies"]data = {"name": company_name,"business_info": business_info,"crawl_time": datetime.now()}collection.insert_one(data)
https://www.tianyancha.com/robots.txt,避免爬取禁止路径。time.sleep(random.uniform(1, 3))),避免触发IP封禁。logging模块记录爬取过程,便于问题排查。通过系统化的技术选型、反爬应对和数据管理,开发者可高效实现天眼查等企业信用信息系统的数据采集,为商业决策提供有力支持。