爬取天津餐饮数据的代码
时间: 2023-07-15 13:11:05 浏览: 170
爬取天津餐饮数据需要先确定数据来源和爬取方式。以下是一种可能的爬取代码示例,仅供参考:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 设置请求头,防止被网站屏蔽
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 待爬取的页面URL
url = 'http://www.dianping.com/tianjin/ch10'
# 发送请求
response = requests.get(url, headers=headers)
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 获取所有餐厅的链接
restaurant_links = []
for item in soup.find_all('div', {'class': 'tit'}):
link = item.find('a').get('href')
restaurant_links.append(link)
# 遍历所有餐厅链接,爬取详细信息
restaurant_data = []
for link in restaurant_links:
response = requests.get(link, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
name = soup.find('h1', {'class': 'shop-name'}).text.strip()
address = soup.find('div', {'class': 'expand-info address'}).find('span', {'itemprop': 'street-address'}).text.strip()
tel = soup.find('p', {'class': 'expand-info tel'}).find('span', {'itemprop': 'tel'}).text.strip()
rating = soup.find('span', {'class': 'mid-rank-stars'})['title']
review_count = soup.find('span', {'class': 'review-num'}).text.strip()
tags = [tag.text for tag in soup.find('div', {'class': 'tag-addr'}).find_all('a')]
restaurant_data.append([name, address, tel, rating, review_count, tags])
# 将数据转换为DataFrame并保存为CSV文件
df = pd.DataFrame(restaurant_data, columns=['name', 'address', 'tel', 'rating', 'review_count', 'tags'])
df.to_csv('tianjin_restaurants.csv', index=False)
```
这段代码使用requests库向目标网站发送请求,并使用BeautifulSoup库解析HTML获取所需信息。具体的爬取逻辑包括:
1. 发送请求获取待爬取页面HTML;
2. 解析HTML获取所有餐厅链接;
3. 遍历所有餐厅链接,分别获取餐厅名称、地址、联系电话、评分、评论数量和标签等信息;
4. 将数据转换为DataFrame格式,并保存为CSV文件。
阅读全文