中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用python爬取豆瓣前一百電影

發布時間:2022-01-17 12:06:04 來源:億速云 閱讀:144 作者:kk 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么用python爬取豆瓣前一百電影,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

python是什么意思

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)的電影信息。

怎么用python爬取豆瓣前一百電影

這里我們使用了遍歷,爬取前四頁的數據。

(2)通過快捷鍵打開網頁的開發者工具(Windows 用戶可以在瀏覽器頁面下按 Ctrl + Shift + I 鍵或者直接F12喚出瀏覽器開發者工具,Mac 用戶的快捷鍵為 command + option + I)。

接著使用開發者工具中的指針工具,大致查看一下前兩部電影中,需爬取的信息所在位置,觀察一下其中是否有什么規律。

可以發現第一部電影里序號、電影名、評分、推薦語以及詳情鏈接在class屬性值為"item"的標簽里。

怎么用python爬取豆瓣前一百電影

(3)豆瓣電影 Top250 的 Robots 協議

怎么用python爬取豆瓣前一百電影

 并沒有看到Disallow: /Top250,這說明可以對這個網頁進行爬取。

(4)在互聯網世界中,網絡請求會將瀏覽器信息儲存在請求頭(Request Header)當中。

只要我們將瀏覽器信息復制下來,在爬蟲程序只要在發起請求時,設置好與請求頭對應的參數,即可成功偽裝成瀏覽器。

怎么用python爬取豆瓣前一百電影

(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 文件中。

運行結果:

怎么用python爬取豆瓣前一百電影

 生成的CSV文件:

怎么用python爬取豆瓣前一百電影

上述就是小編為大家分享的怎么用python爬取豆瓣前一百電影了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹东市| 津南区| 陆河县| 永年县| 和硕县| 巴林右旗| 抚顺县| 临潭县| 临澧县| 建昌县| 嵩明县| 建始县| 临泽县| 新巴尔虎左旗| 页游| 横峰县| 杂多县| 柳林县| 连城县| 玛曲县| 师宗县| 苗栗县| 桓仁| 饶阳县| 扶余县| 西林县| 九龙坡区| 威信县| 禄丰县| 长垣县| 湘乡市| 黎川县| 门头沟区| 黄陵县| 临邑县| 昆山市| 大姚县| 芜湖县| 仁怀市| 嘉祥县| 同德县|