您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么用python爬取豆瓣前一百電影,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
網站爬取的流程圖:
實現項目我們需要運用以下幾個知識點
一、獲取網頁
1.找網頁規律;
2.使用 for 循環語句獲得網站前4頁的網頁鏈接;
3.使用 Network 選項卡查找Headers信息;
4.使用 requests.get() 函數帶著 Headers 請求網頁。
二、解析網頁
1.使用 BeautifulSoup 解析網頁;
2.使用 BeautifulSoup 對象調用 find_all() 方法定位包含單部電影全部信息的標簽;
3.使用 Tag.text 提取序號、電影名、評分、推薦語;
4.使用 Tag['屬性名'] 提取電影詳情鏈接。
三、存儲數據
1.使用 with open() as … 創建要寫入內容的 csv 文件;
2.使用 csv.DictWriter() 將文件對象轉換為 DictWriter 對象;
3.參數 fieldnames 用來設置 csv 文件的表頭;
4.使用 writeheader() 寫入表頭;
5.使用 writerows() 將內容寫入 csv 文件。
import csvimport requestsfrom bs4 import BeautifulSoup# 設置列表,用以存儲每部電影的信息data_list = []# 設置請求頭headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'}# 使用 for 循環遍歷取值范圍為 0~3 的數據for page_number in range(4): # 設置要請求的網頁鏈接 url = 'https://movie.douban.com/top250?start={}&filter='.format(page_number * 25) # 請求網頁 movies_list_res = requests.get(url, headers=headers) # 解析請求到的網頁內容 bs = BeautifulSoup(movies_list_res.text, 'html.parser') # 搜索網頁中所有包含單部電影全部信息的 Tag movies_list = bs.find_all('div', class_='item') # 使用 for 循環遍歷搜索結果 for movie in movies_list: # 提取電影的序號 movie_num = movie.find('em').text # 提取電影名 movie_name = movie.find('span').text # 提取電影的評分 movie_score = movie.find("span",class_='rating_num').text # 提取電影的推薦語 movie_instruction = movie.find("span",class_='inq').text # 提取電影的鏈接 movie_link = movie.find('a')['href'] # 將信息添加到字典中 movie_dict = { '序號': movie_num, '電影名': movie_name, '評分': movie_score, '推薦語': movie_instruction, '鏈接': movie_link } # 打印電影的信息 print(movie_dict) # 存儲每部電影的信息 data_list.append(movie_dict)# 新建 csv 文件,用以存儲電影信息with open('movies.csv', 'w', encoding='utf-8-sig') as f: # 將文件對象轉換成 DictWriter 對象 f_csv = csv.DictWriter(f, fieldnames=['序號', '電影名', '評分', '推薦語', '鏈接']) # 寫入表頭與數據 f_csv.writeheader() f_csv.writerows(data_list)
(1)通過觀察網站一頁的電影數,可以發現一頁只有 25 部電影的信息。
也就是說我們需要爬取網站前4頁(100 = 25*4)的電影信息。
這里我們使用了遍歷,爬取前四頁的數據。
(2)通過快捷鍵打開網頁的開發者工具(Windows 用戶可以在瀏覽器頁面下按 Ctrl + Shift + I
鍵或者直接F12喚出瀏覽器開發者工具,Mac 用戶的快捷鍵為 command + option + I
)。
接著使用開發者工具中的指針工具,大致查看一下前兩部電影中,需爬取的信息所在位置,觀察一下其中是否有什么規律。
可以發現第一部電影里序號、電影名、評分、推薦語以及詳情鏈接在class
屬性值為"item"的標簽里。
(3)豆瓣電影 Top250 的 Robots 協議
并沒有看到Disallow: /Top250,這說明可以對這個網頁進行爬取。
(4)在互聯網世界中,網絡請求會將瀏覽器信息儲存在請求頭
(Request Header)當中。
只要我們將瀏覽器信息復制下來,在爬蟲程序只要在發起請求時,設置好與請求頭
對應的參數,即可成功偽裝成瀏覽器。
(5)代碼思路
1)熟練地使用開發者工具的指針工具,可以很方便地幫助我們定位數據。
2)用指針工具定位到各個數據所在位置后,查看它們的規律。
3)想要提取的標簽如果具有屬性,可以使用 Tag.find(HTML元素名, HTML屬性名='')來提取;沒有屬性的話,可以在這個標簽附近找到一個有屬性的標簽,然后再進行 find() 提取。
通過上述步驟將信息爬取下來后,就走到我們爬蟲的最后一步——存儲數據。
(6)存儲數據
1)調用 csv 模塊中類 DictWriter 的語法為:csv.DictWriter(f, fieldnames)
。語法中的參數 f 是 open() 函數打開的文件對象;參數 fieldnames 用來設置文件的表頭;
2)執行csv.DictWriter(f, fieldnames)
后會得到一個 DictWriter 對象;
3)得到的 DictWriter 對象可以調用 writeheader()
方法,將 fieldnames 寫入 csv 的第一行;
4)最后,調用 writerows()
方法將多個字典寫進 csv 文件中。
生成的CSV文件:
上述就是小編為大家分享的怎么用python爬取豆瓣前一百電影了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。