① 第5課 實例二:爬取電影
1. 選擇一個網站: https://www.douban.com
2. 在進行爬取之前,我們先去看看它的robots協議。
協議網址: https://www.douban.com /robots.txt
3. 進入首頁 https://movie.douban.com/top250?start=0&filter= ,打開檢查工具,在Elements里查看這個網頁,是什麼結構。
點擊開發者工具左上角的小箭頭,選中「肖申克的救贖」,這樣就定位了電影名的所在位置,審查元素中顯示<span class="title">:<span>標簽內的文本,class屬性;推薦語和評分也是如此,<span class='inq'>,<span class='rating_num'>;序號:<em class>,<em>標簽內的文本,class屬性;推薦語<span class='inq'>;鏈接是<a>標簽里href的值。最後,它們最小共同父級標簽,是<li>。
4. 我們再換個電影驗證下找的規律是否正確。
5. check後,我們再看一共10頁,每頁的url有什麼相關呢?
第1頁: https://movie.douban.com/top250?start=0&filter=
第3頁: https://movie.douban.com/top250?start=50&filter=
第7頁: https://movie.douban.com/top250?start=150&filter=
發現只有start後面是有變化,規律就是第N頁,start=(N-1)*25
6. 基於以上分析,我們有兩種寫爬蟲的思路。
思路一:先爬取最小共同父級標簽 <li>,然後針對每一個父級標簽,提取裡面的序號/電影名/評分/推薦語/鏈接。
思路二:分別提取所有的序號/所有的電影名/所有的評分/所有的推薦語/所有的鏈接,然後再按順序一一對應起來。
import requests# 引用requests庫
from bs4 import BeautifulSoup# 引用BeautifulSoup庫
res_films=requests.get('https://movie.douban.com/')# 獲取數據
bs_films=BeautifulSoup(res_films.text,'html.parser')# 解析數據
fil_title=bs_films.find_all(class_='title')
fil_num=bs_films.find_all(class_="")
list_all=[]# 創建一個空列表,用於存儲信息
for x in range(len(fil_num)):
list_films=[fil_num[x].text[18:-14],fil_title[x].find('a')['href']]
list_all.append(list_films)
print(list_all)
② Python爬蟲實戰(1)requests爬取豆瓣電影TOP250
爬取時間:2020/11/25
系統環境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的庫:requestslxmlpandasmatplotlib
umpy
蛋肥想法: 先將電影名稱、原名、評分、評價人數、分類信息從網站上爬取下來。
蛋肥想法: print數據列表後發現電影原名、分類信息等存在不需要的字元,需預先處理;同時因為後續想做一個豆瓣電影TOP250的維度分布圖,而同一電影存在多個發行國家、類型(如「法國 美國 / 劇情 動作 犯罪」),為了簡(偷)便(懶),這里均取第一個作為記入的數據;最後將數據保存為xlsx。
蛋肥想法: 蛋肥想知道在豆瓣電影TOP250中年份、國家、類型的維度數據,為了練手,使用剛才保存成xlsx的數據,並分別畫成雷達圖、柱形圖、扇形圖。
③ 怎樣避開豆瓣對爬蟲的封鎖,從而抓取豆瓣上電影內容
用前嗅的ForeSpider數據採集軟體可以採集,我之前采過豆瓣的影評,可以設置各種過濾規律,比如我只要豆瓣評分6.0以上的電影,就可以精確的過濾。ForeSpider可以智能模擬瀏覽器和用戶行為,突破反爬蟲限制。可以設置代理IP,並且可以自動過濾優質IP代理,提高使用代理的速度。
對於一些高難度的網站,反爬蟲措施比較多,可以使用ForeSpider內部自帶的爬蟲腳本語言系統,簡單幾行代碼就可以採集到高難度的網站。
可以去下載免費版,免費版不限制採集功能。有詳細的操作手冊可以學習。如果自己不想學習,可以讓前嗅進行配置。
而且客服可以教你怎樣用,有問題出錯了客服會遠程操作,非常好的服務態度。
④ Python爬蟲實戰,Python多線程抓取5千多部最新電影下載鏈接
利用Python多線程爬了5000多部最新電影下載鏈接,廢話不多說~
讓我們愉快地開始吧~
Python版本: 3.6.4
相關模塊:
requests模塊;
re模塊;
csv模塊;
以及一些Python自帶的模塊。
安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。
拿到鏈接之後,接下來就是繼續訪問這些鏈接,然後拿到電影的下載鏈接
但是這里還是有很多的小細節,例如我們需要拿到電影的總頁數,其次這么多的頁面,一個線程不知道要跑到什麼時候,所以我們首先先拿到總頁碼,然後用多線程來進行任務的分配
我們首先先拿到總頁碼,然後用多線程來進行任務的分配
總頁數其實我們用re正則來獲取
爬取的內容存取到csv,也可以寫個函數來存取
開啟4個進程來下載鏈接
您學廢了嗎?最後祝大家天天進步!!學習Python最重要的就是心態。我們在學習過程中必然會遇到很多難題,可能自己想破腦袋都無法解決。這都是正常的,千萬別急著否定自己,懷疑自己。如果大家在剛開始學習中遇到困難,想找一個python學習交流環境,可以加入我們,領取學習資料,一起討論,會節約很多時間,減少很多遇到的難題。