第三次作業
作業①:
要求:指定一個網站,爬取這個網站中的所有的所有圖檔,例如中國氣象網(http://www.weather.com.cn)。分别使用單線程和多線程的方式爬取。(限定爬取圖檔數量為學号後3位)
輸出資訊:
将下載下傳的url資訊在控制台輸出,并将下載下傳的圖檔存儲在result子檔案夾中,并給出截圖。
單線程實作過程:
① beautifulsoup解析網頁:
② 翻頁處理的函數:
由上圖可以看出,城市資訊可以以清單形式存儲在dd a 節點下的
③ 存儲圖檔的函數:
④ 主函數:
⑤ 結果展示:
多線程實作過程:
① imagespider函數:
② download函數:
③ 主函數:
④ 結果展示:
由于是多線程,是以下載下傳圖檔是沒有按照爬取順序的
作業②
要求:使用scrapy架構複現作業①。
輸出資訊:
同作業①
實作過程:
① items.py:
② piplines.py:(與作業①的存儲函數起到一樣的作用)
③ setting.py
④ myspider.py(與作業①主函數起到一樣的作用,爬取圖檔資訊)
圖檔資訊:
翻頁處理:
心得體會:
作業③:
要求:爬取豆瓣電影資料使用scrapy和xpath,并将内容存儲到資料庫,同時将圖檔存儲在imgs路徑下。
候選網站: https://movie.douban.com/top250
序号
電影名稱
導演
演員
簡介
電影評分
電影封面
1
肖申克的救贖
弗蘭克·德拉邦特
蒂姆·羅賓斯
希望讓人自由
9.7
./imgs/xsk.jpg
2....
② piplines.py:
将資訊存儲到資料庫:
儲存圖檔到本地:
③ setting.py:
④ myspider.py:
解析網頁:
找到存儲電影的節點:
找到每個節點中我們想要的資訊:
翻頁處理:
由上圖看出,下一頁的hrefl + 首頁url 可以得到完整的url:
結果展示:
心得體會*
在作業三中,遇到的問題主要是導演與主演資訊存在一個text裡,需要對字元串進行分割:
我們首先用xpath方法找到包含此text的字元串:(代碼實作)
再觀察,對于某些電影是有主演的,而有些電影是沒有主演的
故我們需要進行細節處理:
利用source.split(':')對source進行分割,對于有主演的電影,分割後的段數大于2,而對于無主演的電影,分割後的段數小于等于2;
注:split(' ')[1]是為了分開英文名與中文名并輸出中文名
附:完整代碼連結