爬取去哪儿网旅游数据并可视化分析的代码
时间: 2023-09-06 16:14:40 浏览: 205
去哪儿网旅游数据爬取+可视化分析
这是一个基于Python的爬虫程序,可以爬取去哪儿网的旅游数据,并进行可视化分析。具体代码如下:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 设置请求头部信息
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'
}
# 发送请求获取HTML页面
def get_html(url):
r = requests.get(url, headers=headers)
r.encoding = r.apparent_encoding
return r.text
# 解析HTML页面获取数据
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
data_list = []
for item in soup.find_all('div', class_='gl_list'):
data = {
'title': item.find('a', class_='list_title').get_text(),
'price': item.find('span', class_='price').get_text(),
'comment': item.find('div', class_='comment').get_text()
}
data_list.append(data)
return data_list
# 将数据保存到CSV文件中
def save_to_csv(data_list):
df = pd.DataFrame(data_list)
df.to_csv('travel_data.csv', index=False)
# 可视化分析
def analyze_data():
df = pd.read_csv('travel_data.csv')
# 统计价格区间占比
price_list = df['price'].tolist()
bins = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
labels = ['0-100', '100-200', '200-300', '300-400', '400-500', '500-600', '600-700', '700-800', '800-900', '900-1000+']
price_cut = pd.cut(price_list, bins=bins, labels=labels)
price_cut.value_counts().plot(kind='bar', rot=0)
plt.title('Price Distribution')
plt.xlabel('Price Range')
plt.ylabel('Count')
plt.show()
# 统计评论数量占比
comment_list = df['comment'].tolist()
comment_count = {}
for comment in comment_list:
count = comment_count.get(comment, 0)
count += 1
comment_count[comment] = count
labels = list(comment_count.keys())
values = list(comment_count.values())
plt.pie(values, labels=labels, autopct='%1.2f%%')
plt.title('Comment Distribution')
plt.show()
if __name__ == '__main__':
url = 'https://travel.qunar.com/p-cs299895-huangshan-jingdian'
html = get_html(url)
data_list = parse_html(html)
save_to_csv(data_list)
analyze_data()
```
运行以上代码后,程序会自动爬取去哪儿网的旅游数据,并将数据保存到CSV文件中。接着,程序会进行可视化分析,展示价格区间和评论数量的分布情况。可以根据需要对代码进行适当修改,以适应不同的爬取和分析需求。
阅读全文