
1. 項目概述AI輔助下的Python爬蟲入門實戰去年幫一位做企業征信分析的朋友處理數據時我意識到天眼查這類商業信息平臺的數據采集需求遠比想象中普遍。但傳統爬蟲開發需要面對反爬機制、頁面解析等復雜問題對新手極不友好。最近測試了幾款AI編程助手后發現它們能顯著降低學習門檻——即使零基礎用戶配合正確的工具鏈也能在2小時內完成首個可用的企業信息采集腳本。這個項目將展示如何用AI輔助工具快速構建天眼查爬蟲。不同于傳統教程我們會重點利用AI實時生成代碼、解釋邏輯、調試錯誤的能力讓編程基礎薄弱的用戶也能理解每個環節。最終實現的腳本可以自動獲取公司基本信息、股東構成、法律訴訟等關鍵數據并以結構化格式存儲。關鍵提示所有操作均在法律允許范圍內進行嚴格遵守天眼查robots.txt規定單次采集間隔設置為5秒以上僅用于個人學習目的2. 環境配置與工具選型2.1 Python環境快速搭建對于Windows用戶推薦使用Microsoft Store直接安裝Python 3.11打開Microsoft Store搜索Python 3.11點擊獲取默認會勾選將Python添加到PATH安裝完成后在CMD輸入python --version驗證Mac用戶建議通過Homebrew安裝brew install python3.11 echo export PATH/opt/homebrew/opt/python3.11/bin:$PATH ~/.zshrc2.2 開發工具配置VSCode作為首選IDE需要安裝以下擴展Python官方擴展代碼補全和調試Jupyter交互式執行代碼片段GitHub CopilotAI輔助編程核心工具實測配置要點在設置中開啟Auto Complete和Inline Suggest調整Copilot的響應速度為Balanced設置→Extensions→Copilot安裝后按CtrlShiftP輸入Copilot: Login完成身份驗證2.3 必備Python庫安裝創建項目目錄后執行pip install requests beautifulsoup4 pandas fake-useragent各庫作用說明requests網絡請求核心庫比urllib更友好beautifulsoup4HTML解析神器pandas數據清洗與導出fake-useragent生成隨機請求頭規避基礎反爬3. 天眼查頁面結構分析3.1 目標數據定位以小米科技有限責任公司為例公司ID92040300710932208K我們需要采集工商基本信息注冊資本、成立日期等主要人員法人、股東等分支機構風險信息法律訴訟、行政處罰等通過瀏覽器開發者工具F12分析發現關鍵數據通過異步接口加載XHR請求數據接口需要攜帶Cookie和Token認證分頁數據采用動態參數加密3.2 反爬機制破解方案天眼查采用的多層防護包括請求頭驗證User-Agent、Referer行為檢測鼠標軌跡、請求頻率參數簽名_token等動態值應對策略headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, Referer: https://www.tianyancha.com/, Cookie: 你的登錄Cookie # 通過手動登錄后獲取 }重要提醒切勿使用多線程/異步請求單次采集間隔建議5-10秒每日采集量控制在100條以內4. AI輔助開發實戰流程4.1 用自然語言描述需求在VSCode中新建.py文件直接輸入注釋# 我需要一個天眼查公司詳情采集腳本要求 # 1. 輸入公司ID獲取基本信息 # 2. 處理JSON格式的響應數據 # 3. 將結果保存到Excel # 4. 自動處理網絡異常和反爬Copilot會自動生成基礎代碼框架我們在此基礎上修改import requests import pandas as pd from fake_useragent import UserAgent def get_company_info(company_id): ua UserAgent() headers { User-Agent: ua.random, Referer: fhttps://www.tianyancha.com/company/{company_id} } url fhttps://www.tianyancha.com/api/v4/company/baseinfo?id{company_id} try: response requests.get(url, headersheaders, timeout10) response.raise_for_status() return response.json()[data] except Exception as e: print(fError fetching data: {e}) return None4.2 數據解析與清洗讓AI幫助處理嵌套的JSON結構# 請幫我解析天眼查返回的JSON數據提取以下字段 # 公司名稱、注冊資本、成立日期、統一社會信用代碼 # 并轉換為Pandas DataFrame格式 def parse_company_data(json_data): if not json_data: return pd.DataFrame() base_info json_data.get(baseInfo, {}) result { 公司名稱: base_info.get(name), 注冊資本: f{base_info.get(regCapital)} {base_info.get(regCapitalCurrency, 人民幣)}, 成立日期: base_info.get(estiblishTime), 信用代碼: base_info.get(creditCode) } return pd.DataFrame([result])4.3 異常處理增強通過對話式交互讓AI補充健壯性代碼# 請為爬蟲添加以下異常處理 # 1. 代理失敗自動重試 # 2. 驗證碼觸發時暫停操作 # 3. 數據格式錯誤時記錄日志 RETRY_MAX 3 PROXIES {http: http://你的代理IP:端口} def safe_request(url, headers, retry0): if retry RETRY_MAX: raise Exception(Max retries exceeded) try: response requests.get(url, headersheaders, proxiesPROXIES, timeout15) if 驗證碼 in response.text: input(請手動處理驗證碼后按回車繼續...) return safe_request(url, headers, retry1) return response except requests.exceptions.RequestException as e: print(fRequest failed (attempt {retry1}): {e}) time.sleep(5 * (retry 1)) return safe_request(url, headers, retry1)5. 完整腳本組裝與優化5.1 主流程實現整合各功能模塊import time from tqdm import tqdm # 進度條顯示 def main(): company_ids [92040300710932208K] # 示例公司ID all_data [] for cid in tqdm(company_ids): raw_data get_company_info(cid) df parse_company_data(raw_data) if not df.empty: all_data.append(df) time.sleep(8) # 遵守爬蟲禮儀 final_df pd.concat(all_data, ignore_indexTrue) final_df.to_excel(tianyancha_data.xlsx, indexFalse) print(f成功保存{len(all_data)}條數據)5.2 參數調優建議通過AI分析得到的性能優化點請求超時設置為10-15秒兼顧成功率和效率隨機延遲區間設為5-10秒避免固定間隔被識別使用會話對象(Session)保持連接降低TCP握手開銷優化后的請求代碼session requests.Session() adapter requests.adapters.HTTPAdapter( pool_connections10, pool_maxsize10, max_retries3 ) session.mount(http://, adapter) session.mount(https://, adapter) def optimized_request(url): delay random.uniform(5, 10) time.sleep(delay) return session.get(url, headersgenerate_headers())6. 常見問題與解決方案6.1 驗證碼觸發應對當出現verify.tianyancha.com重定向時立即暫停程序運行手動在瀏覽器完成驗證碼驗證更新Cookie后再繼續運行考慮使用付費代理IP建議選擇高匿住宅代理6.2 數據缺失處理典型場景及解決方法| 問題現象 | 可能原因 | 解決方案 | |-------------------------|--------------------------|----------------------------| | 注冊資本顯示為null | 數據接口版本變更 | 檢查API路徑是否為v4最新版 | | 股東信息列表為空 | 需要調用單獨接口 | 查找/api/v4/holder類接口 | | 返回數據包含HTML代碼 | 觸發反爬被重定向 | 更換UserAgent和IP |6.3 效率提升技巧使用concurrent.futures實現受限并發建議線程數≤3優先采集必要字段避免全量數據請求對穩定接口使用本地緩存示例代碼from diskcache import Cache cache Cache(tianyancha_cache) cache.memoize(expire86400) def cached_request(url): return requests.get(url).json()7. 法律合規與數據使用7.1 robots.txt檢查天眼查當前robots.txt關鍵限制Disallow: /search/ Disallow: /company/ Disallow: /vip/解讀說明禁止爬取搜索功能相關頁面公司詳情頁原則上不允許爬取實際可通過API接口獲取數據但需控制頻率7.2 數據使用建議合法使用邊界禁止商業性批量采集需購買官方API允許少量數據用于學術研究個人學習用途需刪除敏感字段如聯系方式數據脫敏示例def anonymize_data(df): sensitive_cols [phone, email, idNumber] for col in sensitive_cols: if col in df.columns: df[col] REDACTED return df這個項目的核心價值在于展示AI如何降低編程學習曲線——當遇到不懂的代碼時你可以直接選中代碼按CtrlI召喚Copilot解釋當需要新功能時用自然語言描述就能生成可用代碼框架。這種即時反饋的學習方式讓零基礎用戶能在解決實際問題的過程中掌握Python核心概念。