利用python来爬取携程网武汉相关的旅游数据,包括游玩天数,时间,人均花费,旅游景点等。获取前五十页的数据,对数据进行分析,计算平均花费、游玩时间在一年中几月份最多、游玩景点的排序等。并进行代码运行试验
时间: 2024-06-08 11:11:33 浏览: 84
好的,这是一个比较复杂的爬虫项目,需要用到requests、BeautifulSoup等库,还需要对网站的结构进行分析和抓包。我可以帮你提供大致的思路和代码框架:
```python
import requests
from bs4 import BeautifulSoup
# 定义爬虫函数
def spider(page):
url = "https://you.ctrip.com/searchsite/travels/?query=%E6%AD%A6%E6%B1%89&isAnswered=&isRecommended=&publishDate=&PageNo=" + str(page)
# 发送请求
res = requests.get(url)
# 解析HTML
soup = BeautifulSoup(res.text, "html.parser")
# 获取数据
data_list = []
for item in soup.find_all("div", class_="list_mod2"):
# 提取游玩天数、时间、人均花费、旅游景点等信息
# 并将这些信息存储在一个字典中
data = {
"days": item.find("span", class_="ellipsis").text,
"time": item.find("span", class_="date").text,
"cost": item.find("span", class_="cost").text,
"spots": [spot.text for spot in item.find_all("a", class_="a_spot_title")]
}
data_list.append(data)
return data_list
# 爬取前50页数据
data = []
for i in range(1, 51):
data += spider(i)
# 数据分析
# 计算平均花费
total_cost = sum([float(d["cost"]) for d in data])
avg_cost = total_cost / len(data)
print("平均花费:", avg_cost)
# 统计每个月份的游玩时间
month_dict = {}
for d in data:
month = int(d["time"].split("-")[1])
if month not in month_dict:
month_dict[month] = 0
month_dict[month] += int(d["days"])
max_month = max(month_dict, key=month_dict.get)
print("游玩时间最多的月份:", max_month)
# 对景点进行排序
spot_dict = {}
for d in data:
for spot in d["spots"]:
if spot not in spot_dict:
spot_dict[spot] = 0
spot_dict[spot] += 1
sorted_spots = sorted(spot_dict.items(), key=lambda x: x[1], reverse=True)
print("游玩景点排序:", sorted_spots)
```
你可以根据自己的需求和网站的具体结构进行调整和优化。
阅读全文