您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何用Python代码爬取美食网信息
在当今互联网时代,美食网站蕴藏着大量有价值的菜谱、餐厅评价和饮食文化数据。本文将详细介绍如何使用Python爬虫技术获取这些信息,并提供完整的代码示例和注意事项。
## 一、准备工作
### 1.1 安装必要库
```python
pip install requests beautifulsoup4 pandas
import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib.parse import urljoin
import time
import random
以大众点评为例(实际使用时请遵守robots.txt规则):
- 菜品页URL通常包含/shop/
和菜品ID
- 关键信息存储在HTML的<div class="review-wrapper">
等标签中
- 分页参数通常为?page=2
形式
def scrape_food_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# 提取示例数据(需根据实际网站调整)
dishes = []
for item in soup.select('.menu-item'):
name = item.select_one('.name').text.strip()
price = item.select_one('.price').text.strip()
dishes.append({'name': name, 'price': price})
return dishes
except Exception as e:
print(f"Error scraping {url}: {e}")
return []
def scrape_multiple_pages(base_url, max_pages=5):
all_dishes = []
for page in range(1, max_pages+1):
url = f"{base_url}?page={page}"
print(f"Scraping {url}...")
all_dishes.extend(scrape_food_page(url))
time.sleep(random.uniform(1, 3)) # 礼貌性延迟
return all_dishes
def save_to_csv(data, filename='food_data.csv'):
df = pd.DataFrame(data)
df.to_csv(filename, index=False, encoding='utf_8_sig')
def clean_data(df):
# 去除重复项
df = df.drop_duplicates()
# 价格字段处理
df['price'] = df['price'].str.replace('¥', '').astype(float)
return df
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Referer': 'https://www.dianping.com/',
'Accept-Language': 'zh-CN,zh;q=0.9'
}
proxies = {
'http': 'http://your.proxy.ip:port',
'https': 'https://your.proxy.ip:port'
}
response = requests.get(url, headers=headers, proxies=proxies)
if __name__ == "__main__":
# 示例URL(请替换为实际目标)
base_url = "https://www.example.com/food/list"
# 步骤1:爬取数据
food_data = scrape_multiple_pages(base_url, max_pages=3)
# 步骤2:数据清洗
df = pd.DataFrame(food_data)
clean_df = clean_data(df)
# 步骤3:存储结果
save_to_csv(clean_df)
print(f"成功保存{len(clean_df)}条美食数据")
/robots.txt
文件提示:本文示例代码需根据实际目标网站结构调整选择器,建议先使用浏览器开发者工具(F12)分析网页结构后再编写具体爬取逻辑。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。