携程酒店前列数据爬取
时间: 2024-12-27 12:26:44 浏览: 15
### 获取携程网酒店排行榜前几页的数据
为了实现这一目标,可以采用 Python 的 `requests` 和 `BeautifulSoup` 库来发送 HTTP 请求并解析网页内容。需要注意的是,在执行此类操作之前应当查阅目标网站的服务条款,确保行为合法合规。
#### 准备工作
安装必要的库:
```bash
pip install requests beautifulsoup4 lxml
```
#### 编写爬虫脚本
下面是一个简单的例子展示如何抓取携程网上的酒店排行页面:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
def fetch_hotel_rankings(url, headers):
response = requests.get(url=url, headers=headers)
if response.status_code != 200:
raise Exception(f"Failed to load page {url}")
soup = BeautifulSoup(response.text, 'lxml')
hotels_list = []
items = soup.select('.hotel_item') # 假设这是存储单个酒店信息的选择器路径[^1]
for item in items[:10]: # 只提取前十名作为示范
name = item.find('h3').get_text(strip=True)
score = item.select_one('.score').get_text(strip=True).replace('分', '')
price = item.select_one('.J_priceLowList').get_text(strip=True)
hotel_info = {
"name": name,
"score": float(score),
"price": int(price.replace('¥', '')),
}
hotels_list.append(hotel_info)
df = pd.DataFrame(hotels_list)
return df
if __name__ == "__main__":
url = "https://hotels.ctrip.com/hotel/top.html"
user_agent = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
top_hotels_df = fetch_hotel_rankings(url, user_agent)
print(top_hotels_df.head())
```
这段代码定义了一个函数用于获取指定 URL 下的酒店列表,并将其转换成 Pandas DataFrame 表格形式以便后续处理分析。这里假设了某些 HTML 结构特征,请根据实际情况调整 CSS Selectors 或 XPath 来匹配最新的网页布局。
阅读全文