# 怎么用Python爬取惠農網蘋果數據
## 前言
在農產品電商領域,惠農網作為國內領先的B2B平臺,匯聚了大量農產品價格、供需等市場數據。對于農業從業者、市場分析師或數據愛好者而言,獲取這些數據具有重要價值。本文將詳細介紹如何使用Python爬蟲技術從惠農網獲取蘋果相關數據,包括價格走勢、供應信息等。
## 一、準備工作
### 1.1 技術選型
我們主要使用以下Python庫:
- `requests`:發送HTTP請求
- `BeautifulSoup`/`lxml`:HTML解析
- `pandas`:數據存儲與分析
- `selenium`(可選):處理動態加載內容
- `time`:設置爬取間隔
安裝所需庫:
```bash
pip install requests beautifulsoup4 pandas selenium
訪問惠農網蘋果頻道(https://www.cnhnb.com/p/蘋果/),觀察: 1. 頁面結構:價格行情、供應信息、采購需求等板塊 2. 數據加載方式:靜態HTML或動態AJAX加載 3. 翻頁機制:URL參數變化或POST請求
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def get_page(url):
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
response.encoding = response.apparent_encoding
return response.text
except Exception as e:
print(f"獲取頁面失敗: {e}")
return None
以價格行情板塊為例:
def parse_price_data(html):
soup = BeautifulSoup(html, 'lxml')
price_table = soup.find('div', class_='price-table') # 需根據實際調整
data = []
for row in price_table.find_all('tr')[1:]: # 跳過表頭
cells = row.find_all('td')
item = {
'品種': cells[0].text.strip(),
'最低價': cells[1].text.strip(),
'最高價': cells[2].text.strip(),
'均價': cells[3].text.strip(),
'單位': cells[4].text.strip(),
'市場': cells[5].text.strip(),
'更新時間': cells[6].text.strip()
}
data.append(item)
return data
使用pandas保存為CSV:
import pandas as pd
def save_to_csv(data, filename):
df = pd.DataFrame(data)
df.to_csv(filename, index=False, encoding='utf_8_sig')
當遇到JavaScript動態加載時,可使用selenium:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless') # 無頭模式
driver = webdriver.Chrome(options=chrome_options)
def get_dynamic_page(url):
driver.get(url)
time.sleep(3) # 等待加載
return driver.page_source
對于滾動加載的頁面:
def scroll_to_bottom():
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
def crawl_supply_data(pages=5):
base_url = "https://www.cnhnb.com/supply/pg{}-蘋果/"
all_data = []
for page in range(1, pages+1):
url = base_url.format(page)
html = get_page(url) # 或用get_dynamic_page
if html:
soup = BeautifulSoup(html, 'lxml')
items = soup.find_all('div', class_='supply-item') # 需調整
for item in items:
data = {
'標題': item.find('h3').text.strip(),
'價格': item.find('span', class_='price').text.strip(),
'產地': item.find('div', class_='origin').text.strip(),
'供應商': item.find('a', class_='company').text.strip(),
'發布時間': item.find('span', class_='time').text.strip()
}
all_data.append(data)
time.sleep(3) # 遵守爬蟲禮儀
save_to_csv(all_data, 'apple_supply.csv')
def crawl_price_trend(days=30):
# 需要分析惠農網價格趨勢API
api_url = "https://www.cnhnb.com/api/price/trend"
params = {
'product': '蘋果',
'days': days,
# 其他必要參數
}
response = requests.get(api_url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
trend_data = []
for item in data['list']:
trend_data.append({
'日期': item['date'],
'平均價格': item['avgPrice'],
'價格單位': item['unit']
})
save_to_csv(trend_data, 'apple_price_trend.csv')
惠農網可能采用: - User-Agent驗證 - IP頻率限制 - 驗證碼(特別是登錄后) - 數據加密
# 1. 輪換User-Agent
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...'
]
# 2. 使用代理IP
proxies = {
'http': 'http://proxy_ip:port',
'https': 'https://proxy_ip:port'
}
# 3. 隨機延遲
import random
time.sleep(random.uniform(1, 5))
def clean_data(df):
# 價格處理(示例:"¥3.50/斤" → 3.5)
df['價格_數值'] = df['價格'].str.extract(r'¥(\d+\.?\d*)')[0].astype(float)
# 處理缺失值
df = df.dropna(subset=['價格_數值'])
# 統一單位
df['單位'] = df['價格'].str.extract(r'¥.*/(.*)')[0]
return df
def basic_analysis(df):
# 價格分布
print(f"平均價格: {df['價格_數值'].mean():.2f}")
print(f"最高價: {df['價格_數值'].max():.2f}")
# 按產地分析
origin_stats = df.groupby('產地')['價格_數值'].agg(['mean', 'count'])
print(origin_stats.sort_values('mean', ascending=False))
/project
│── /data # 存儲爬取結果
│── /utils # 工具函數
│ ├── crawler.py # 爬蟲核心
│ └── config.py # 配置文件
├── main.py # 主程序
├── requirements.txt # 依賴
└── README.md
本文詳細介紹了使用Python爬取惠農網蘋果數據的技術方案。請注意: 1. 實際爬取時需要根據網站當前結構調整選擇器 2. 大規模爬取建議使用分布式爬蟲框架(如Scrapy) 3. 商業用途需獲得網站授權
通過合理使用這些數據,可以幫助農戶把握市場行情,為采購決策提供數據支持,但切記遵守相關法律法規,做負責任的網絡公民。
本文共計約4350字,涵蓋從基礎爬取到數據分析的完整流程。實際應用中請根據具體需求調整代碼,并始終遵守網站的爬蟲政策。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。