Python語言已經成為網絡爬蟲的首選語言之一。本文將介紹如何使用Python爬取攜程網站上的酒店信息,并將數據保存到本地。
首先,我們需要安裝幾個必備的Python庫:requests和BeautifulSoup??梢允褂靡韵旅钸M行安裝:
pip install requests pip install beautifulsoup4
安裝完成之后,我們需要了解一下攜程網站的頁面結構。其中,酒店信息存儲在頁面的JavaScript代碼中。為了方便解析,我們可以先將頁面上的JavaScript代碼提取出來,再使用正則表達式或者其他方法進行解析。
以下是代碼示例:
import requests from bs4 import BeautifulSoup import re url = "https://hotels.ctrip.com/hotel/shanghai2/g2" # 獲取頁面內容 res = requests.get(url) res.encoding = "utf-8" html = res.text # 提取JavaScript代碼 pattern = re.compile('\s*(.*?)\s*', re.S) script_text = pattern.findall(html)[0] # 解析JavaScript代碼 soup = BeautifulSoup(script_text, 'html.parser') hotel_list = soup.select("[class=hotel_new_list]") # 輸出酒店信息 for hotel in hotel_list: # 獲取酒店名稱 name = hotel.select("[class=hotel_name]").get_text() # 獲取酒店地址 address = hotel.select("[class=hotel_item_htladdress]").get_text() print(name, address)
上述代碼中,我們先通過requests庫獲取頁面內容,并使用正則表達式提取JavaScript代碼。接著,使用BeautifulSoup庫解析JavaScript代碼,并提取需要的酒店信息。最后,將獲取到的酒店名稱和地址輸出。
此外,我們還可以將爬取到的數據保存到本地??梢詫祿鎯槲募蛘邔祿鎯Φ綌祿熘?。以下是將數據存儲為文件的代碼示例:
data = [] for hotel in hotel_list: name = hotel.select("[class=hotel_name]").get_text() address = hotel.select("[class=hotel_item_htladdress]").get_text() data.append([name, address]) # 保存數據到本地文件 with open("hotel_data.txt", "w", encoding="utf-8") as f: for d in data: f.write(",".join(d) + "\n")
上述代碼中,我們將獲取到的酒店信息保存到一個列表中,然后使用Python內置的文件操作函數將數據保存到本地文件中。
總之,Python語言在網絡爬蟲領域中有著廣泛的應用。使用Python可以輕松地爬取攜程網站等各種網站上的數據,并將數據保存到本地,供后續分析和使用。
上一篇Docker鏡像json
下一篇vuE為啥不能轉發