文章目錄
- 一、為什么要用代理IP?(重要!!!)
- 二、環境準備(三件套走起)
- 2.1 安裝必備庫(pip大法好)
- 2.2 獲取亮數據代理(官網注冊送試用)
- 三、編寫爬蟲代碼(含完整異常處理)
- 3.1 基礎爬取函數(核心代碼)
- 3.2 多頁爬取封裝(自動翻頁)
- 四、數據清洗與存儲(Pandas騷操作)
- 4.1 數據去重處理
- 4.2 存儲到CSV(后續AI訓練用)
- 五、訓練面試AI智能體(黑科技揭秘)
- 5.1 數據預處理流程
- 5.2 簡易AI訓練代碼(PyTorch版)
- 六、注意事項(血淚經驗總結)
- 七、常見問題解答(Q&A)
一、為什么要用代理IP?(重要!!!)
兄弟們(敲黑板)!當你想批量爬取招聘網站數據時,有沒有遇到過這些情況:
- 剛爬10頁就被封IP(心態爆炸💥)
- 數據加載不全(關鍵薪資信息總缺失)
- 驗證碼多到懷疑人生(我是機器人嗎?)
重點來了(掏出小本本記):使用亮數據代理IP可以:
- 自動輪換IP地址(避免封禁)
- 突破地域限制(比如想爬某地崗位)
- 繞過反爬機制(成功率提升300%!)
二、環境準備(三件套走起)
2.1 安裝必備庫(pip大法好)
pip install requests beautifulsoup4 pandas
# requests:網絡請求神器
# bs4:HTML解析之王
# pandas:數據處理專家
2.2 獲取亮數據代理(官網注冊送試用)
# 代理配置示例(替換成你的認證信息)
PROXY_USER = "你的用戶名"
PROXY_PASSWORD = "你的密碼"
PROXY_ENDPOINT = "gateway.lumiproxy.com:22225"
三、編寫爬蟲代碼(含完整異常處理)
3.1 基礎爬取函數(核心代碼)
import requests
from bs4 import BeautifulSoupdef get_jobs(keyword, page):# 設置代理(重點!!!)proxies = {"http": f"http://{PROXY_USER}:{PROXY_PASSWORD}@{PROXY_ENDPOINT}","https": f"http://{PROXY_USER}:{PROXY_PASSWORD}@{PROXY_ENDPOINT}"}try:url = f"https://www.zhipin.com/web/geek/job?query={keyword}&page={page}"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."}# 發起帶代理的請求response = requests.get(url, headers=headers, proxies=proxies, timeout=10)response.raise_for_status() # 自動檢測HTTP錯誤# 解析HTMLsoup = BeautifulSoup(response.text, 'lxml')jobs = []for item in soup.select('.job-list li'):title = item.select_one('.job-name').text.strip()salary = item.select_one('.salary').text.strip()company = item.select_one('.company-name').text.strip()jobs.append({"title": title,"salary": salary,"company": company})return jobsexcept Exception as e:print(f"第{page}頁爬取出錯:{str(e)}")return []
3.2 多頁爬取封裝(自動翻頁)
def batch_crawl(keyword, max_page=10):all_jobs = []for page in range(1, max_page+1):print(f"正在爬取第{page}頁...")jobs = get_jobs(keyword, page)if not jobs: # 遇到封禁立即停止print("觸發反爬機制!建議:")print("1. 更換代理IP\n2. 增加請求間隔\n3. 檢查User-Agent")breakall_jobs.extend(jobs)time.sleep(random.uniform(1, 3)) # 隨機等待防封return all_jobs
四、數據清洗與存儲(Pandas騷操作)
4.1 數據去重處理
import pandas as pddf = pd.DataFrame(all_jobs)
print("原始數據量:", len(df))# 高級去重(綜合三個字段)
df_clean = df.drop_duplicates(subset=['title', 'salary', 'company'],keep='first'
)
print("去重后數據量:", len(df_clean))
4.2 存儲到CSV(后續AI訓練用)
df_clean.to_csv('job_data.csv', index=False, encoding='utf-8-sig') # 解決中文亂碼
五、訓練面試AI智能體(黑科技揭秘)
5.1 數據預處理流程
from transformers import AutoTokenizertokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")# 將崗位描述轉換為AI可理解的格式
def preprocess(text):inputs = tokenizer(text,max_length=512,truncation=True,padding='max_length')return inputs
5.2 簡易AI訓練代碼(PyTorch版)
import torch
from transformers import AutoModelForSequenceClassificationmodel = AutoModelForSequenceClassification.from_pretrained("bert-base-chinese",num_labels=2 # 示例:崗位分類
)# 模擬訓練循環(實際需加載清洗后的數據)
for epoch in range(3):optimizer.zero_grad()outputs = model(**batch)loss = outputs.lossloss.backward()optimizer.step()
六、注意事項(血淚經驗總結)
-
法律紅線(必看):
- 遵守《網絡安全法》第27條
- 絕不爬取個人隱私數據
- 遵循robots.txt協議
-
道德準則:
- 控制請求頻率(別把人家網站搞崩了)
- 只用于學習研究
- 數據使用前脫敏處理
-
技術技巧:
- 使用隨機User-Agent(fake_useragent庫)
- 設置超時重試機制(建議最多3次)
- 定期更換代理IP池
七、常見問題解答(Q&A)
Q:亮數據代理和其他代理有什么區別?
A:實測對比(數據說話):
功能 | 亮數據代理 | 普通代理 |
---|---|---|
IP存活率 | 98% | 60% |
響應速度 | <1s | 2-5s |
地域選擇 | 支持定制 | 固定區域 |
Q:為什么我的爬蟲突然不工作了?
A:檢查清單(照著做):
- 代理IP是否過期
- 網站改版導致選擇器失效
- 請求頭是否完整
- 是否觸發人機驗證
最后說句掏心窩的:爬蟲雖好,可不要貪杯哦~(你懂的)合理合法使用技術才是正道!下期教大家如何用這些數據做薪資預測模型,記得三連關注!