Python高階應用程式設計任務
阿新 • • 發佈:2019-12-21
Python高階應用程式設計任務要求
用Python實現一個面向主題的網路爬蟲程式,並完成以下內容:
(注:每人一題,主題內容自選,所有設計內容與原始碼需提交到部落格園平臺)
一、主題式網路爬蟲設計方案(15分)
1.主題式網路爬蟲名稱
名稱:爬取攜程網站泉州地區酒店資訊
2.主題式網路爬蟲爬取的內容與資料特徵分析 本次爬蟲主要爬取攜程網站泉州地區酒店名稱與地址和酒店評分
3.主題式網路爬蟲設計方案概述(包括實現思路與技術難點) 實現思路:本次設計方案主要使用request庫爬取網頁資訊和beautifulSoup庫來提取泉州地區酒店資訊 技術難點:主要包括對攜程網站泉州地區酒店部分的頁面進行分析採集 二、主題頁面的結構特徵分析(15分) 1.主題頁面的結構特徵
2.Htmls頁面解析
通過F12,對頁面進行檢查,檢視我們所需要爬取內容的相關程式碼
3.節點(標籤)查詢方法與遍歷方法
(必要時畫出節點樹結構)
查詢方法:find 遍歷方法:for迴圈
三、網路爬蟲程式設計(60分)
爬蟲程式主體要包括以下各部分,要附原始碼及較詳細註釋,並在每部分程式後面提供輸出結果的截圖。 1.資料爬取與採集
2.對資料進行清洗和處理
3.文字分析(可選):jieba分詞、wordcloud視覺化
4.資料分析與視覺化
(例如:資料柱形圖、直方圖、散點圖、盒圖、分佈圖、資料迴歸分析等)
5.資料持久化
6.附完整程式程式碼
# 匯入相關模組 import requests from bs4 import BeautifulSoup import pandas as pd def getHtml(url): # 判斷爬取 是否出錯 try: # 使用get方式爬取頁面,新增頭部偽裝瀏覽器 r = requests.get(url, headers={'user-agent': 'Mozilla/5.0'}) r.raise_for_status() # 設定編碼格式 r.encoding = r.apparent_encoding # 返回原始碼 return r.text except: return "頁面爬取Error" def HotelList(text,hotellist): soup = BeautifulSoup(text, "html.parser") # 爬取酒店列表 hotel_list = soup.select("div#hotel_list>div") # 迴圈 for hotel in hotel_list: # 將可能出現錯誤的地方進行跳過 try: # 酒店名稱 hotel_name = hotel.select("h2")[0].text # 酒店連結 href = hotel.select("h2>a")[0].attrs["href"] # 服務貧家 recommend = hotel.select("span.recommend")[0].text p = hotel.select("p.hotel_item_htladdress") # 酒店地址 dizhi = p[0].text # 最新預定時間 newtime = hotel.select("p.hotel_item_last_book")[0].text # 評分 hotel_score = hotel.find_all("span", "hotel_value")[0].text # 點評人數 people_number = hotel.select("span.hotel_judgement>span")[0].text # 酒店評分 level = hotel.find_all("span", "hotel_level")[0].text # 質量保證 ico_quality_gold = hotel.select("span.ico_quality_gold")[0].text # 所屬地區 diqu = p[0].find_all( "a", attrs={"tracekey": "nhtllistroomclick"})[0].text # price = hotel.find_all("span", "J_price_lowList ")[0].text hotellist.append([hotel_name, href, recommend, dizhi, newtime, hotel_score, people_number, level, ico_quality_gold, diqu]) print([hotel_name, href, recommend, dizhi, newtime, hotel_score, people_number, level, ico_quality_gold, diqu]) except: "一個數據爬取出錯" hotellist.append([hotel_name, href, recommend, dizhi, newtime, hotel_score, people_number, level, ico_quality_gold, diqu]) def savedata(hotellist): wri = pd.ExcelWriter("HotelList.xlsx") col = ["hotel_name", "href", "recommend", "dizhi", "newtime", "hotel_score", "people_number", "level", "ico_quality_gold", "diqu"] pf = pd.DataFrame(hotellist,columns=col) # 寫入excel pf.to_excel(wri) wri.save() def main(): # 存放資料的陣列 hotellist = [] text = getHtml( "https://hotels.ctrip.com/hotel/quanzhou406#ctm_ref=hod_hp_sb_lst") HotelList(text, hotellist) #列印結果資訊 print(hotellist) # 資料儲存 savedata(hotellist)
四、結論(10分)
1.經過對主題資料的分析與視覺化,可以得到哪些結論? 通過對泉州地區酒店的爬取,可以知道每個酒店的具體名稱和地址還有酒店評分,由此可知泉州華僑大廈和希岸酒店,泉州錢隆酒店的評分最高;泉州泉興精品酒店評分最低。 泉州酒店點評人數最多,泉州錢隆酒店點評人數最少。
2.對本次程式設計任務完成的情況做一個簡單的小結。 我覺得這次爬蟲的內容還挺有意思的,也讓我學到了很多書本以外的知識,一步一步自己探索出來,遇到不懂的問題及時問同學答疑解惑。這一次任務按照老師的要求一步一步來實現,雖然有一些沒有完全實現出來,還存在在很多問題,但是發現問題多了也就能及時查缺補漏,讓我們對Python這門語言有了更深的理解,也讓我增加了更多的興趣對於這個課程,能夠讓自己能更好地進步。