欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用python爬取豆瓣前一百電影

 更新時(shí)間:2022年01月17日 09:57:56   作者:mez_Blog  
大家好,本篇文章主要講的是用python爬取豆瓣前一百電影,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

網(wǎng)站爬取的流程圖:

實(shí)現(xiàn)項(xiàng)目我們需要運(yùn)用以下幾個(gè)知識(shí)點(diǎn)

一、獲取網(wǎng)頁(yè)
1.找網(wǎng)頁(yè)規(guī)律;
2.使用 for 循環(huán)語(yǔ)句獲得網(wǎng)站前4頁(yè)的網(wǎng)頁(yè)鏈接;
3.使用 Network 選項(xiàng)卡查找Headers信息;
4.使用 requests.get() 函數(shù)帶著 Headers 請(qǐng)求網(wǎng)頁(yè)。

二、解析網(wǎng)頁(yè)
1.使用 BeautifulSoup 解析網(wǎng)頁(yè);
2.使用 BeautifulSoup 對(duì)象調(diào)用 find_all() 方法定位包含單部電影全部信息的標(biāo)簽;
3.使用 Tag.text 提取序號(hào)、電影名、評(píng)分、推薦語(yǔ);
4.使用 Tag['屬性名'] 提取電影詳情鏈接。

三、存儲(chǔ)數(shù)據(jù)
1.使用 with open() as … 創(chuàng)建要寫入內(nèi)容的 csv 文件;
2.使用 csv.DictWriter() 將文件對(duì)象轉(zhuǎn)換為 DictWriter 對(duì)象;
3.參數(shù) fieldnames 用來(lái)設(shè)置 csv 文件的表頭;
4.使用 writeheader() 寫入表頭;
5.使用 writerows() 將內(nèi)容寫入 csv 文件。

實(shí)現(xiàn)代碼:

import csvimport requestsfrom bs4 import BeautifulSoup# 設(shè)置列表,用以存儲(chǔ)每部電影的信息data_list = []# 設(shè)置請(qǐng)求頭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 循環(huán)遍歷取值范圍為 0~3 的數(shù)據(jù)for page_number in range(4):    # 設(shè)置要請(qǐng)求的網(wǎng)頁(yè)鏈接    url = 'https://movie.douban.com/top250?start={}&filter='.format(page_number * 25)    # 請(qǐng)求網(wǎng)頁(yè)    movies_list_res = requests.get(url, headers=headers)    # 解析請(qǐng)求到的網(wǎng)頁(yè)內(nèi)容    bs = BeautifulSoup(movies_list_res.text, 'html.parser')    # 搜索網(wǎng)頁(yè)中所有包含單部電影全部信息的 Tag    movies_list = bs.find_all('div', class_='item')    # 使用 for 循環(huán)遍歷搜索結(jié)果    for movie in movies_list:        # 提取電影的序號(hào)        movie_num = movie.find('em').text        # 提取電影名        movie_name = movie.find('span').text        # 提取電影的評(píng)分        movie_score = movie.find("span",class_='rating_num').text        # 提取電影的推薦語(yǔ)        movie_instruction = movie.find("span",class_='inq').text        # 提取電影的鏈接        movie_link = movie.find('a')['href']        # 將信息添加到字典中        movie_dict = {            '序號(hào)': movie_num,            '電影名': movie_name,            '評(píng)分': movie_score,            '推薦語(yǔ)': movie_instruction,            '鏈接': movie_link        }        # 打印電影的信息        print(movie_dict)        # 存儲(chǔ)每部電影的信息        data_list.append(movie_dict)# 新建 csv 文件,用以存儲(chǔ)電影信息with open('movies.csv', 'w', encoding='utf-8-sig') as f:    # 將文件對(duì)象轉(zhuǎn)換成 DictWriter 對(duì)象    f_csv = csv.DictWriter(f, fieldnames=['序號(hào)', '電影名', '評(píng)分', '推薦語(yǔ)', '鏈接'])    # 寫入表頭與數(shù)據(jù)    f_csv.writeheader()    f_csv.writerows(data_list)

代碼分析:

(1)通過(guò)觀察網(wǎng)站一頁(yè)的電影數(shù),可以發(fā)現(xiàn)一頁(yè)只有 25 部電影的信息。

也就是說(shuō)我們需要爬取網(wǎng)站前4頁(yè)(100 = 25*4)的電影信息。

這里我們使用了遍歷,爬取前四頁(yè)的數(shù)據(jù)。

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

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

可以發(fā)現(xiàn)第一部電影里序號(hào)、電影名、評(píng)分、推薦語(yǔ)以及詳情鏈接在class屬性值為"item"的標(biāo)簽里。

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

 并沒(méi)有看到Disallow: /Top250,這說(shuō)明可以對(duì)這個(gè)網(wǎng)頁(yè)進(jìn)行爬取。

(4)在互聯(lián)網(wǎng)世界中,網(wǎng)絡(luò)請(qǐng)求會(huì)將瀏覽器信息儲(chǔ)存在請(qǐng)求頭(Request Header)當(dāng)中。

只要我們將瀏覽器信息復(fù)制下來(lái),在爬蟲程序只要在發(fā)起請(qǐng)求時(shí),設(shè)置好與請(qǐng)求頭對(duì)應(yīng)的參數(shù),即可成功偽裝成瀏覽器。

(5)代碼思路

1)熟練地使用開發(fā)者工具的指針工具,可以很方便地幫助我們定位數(shù)據(jù)。

2)用指針工具定位到各個(gè)數(shù)據(jù)所在位置后,查看它們的規(guī)律。

3)想要提取的標(biāo)簽如果具有屬性,可以使用 Tag.find(HTML元素名, HTML屬性名='')來(lái)提取;沒(méi)有屬性的話,可以在這個(gè)標(biāo)簽附近找到一個(gè)有屬性的標(biāo)簽,然后再進(jìn)行 find() 提取。

通過(guò)上述步驟將信息爬取下來(lái)后,就走到我們爬蟲的最后一步——存儲(chǔ)數(shù)據(jù)。

(6)存儲(chǔ)數(shù)據(jù)

1)調(diào)用 csv 模塊中類 DictWriter 的語(yǔ)法為:csv.DictWriter(f, fieldnames)。語(yǔ)法中的參數(shù) f 是 open() 函數(shù)打開的文件對(duì)象;參數(shù) fieldnames 用來(lái)設(shè)置文件的表頭;

2)執(zhí)行csv.DictWriter(f, fieldnames)后會(huì)得到一個(gè) DictWriter 對(duì)象;

3)得到的 DictWriter 對(duì)象可以調(diào)用 writeheader() 方法,將 fieldnames 寫入 csv 的第一行;

4)最后,調(diào)用 writerows() 方法將多個(gè)字典寫進(jìn) csv 文件中。

運(yùn)行結(jié)果:

 生成的CSV文件:

總結(jié)

到此這篇關(guān)于用python爬取豆瓣前一百電影的文章就介紹到這了,更多相關(guān)python爬取豆瓣電影內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于CUDA out of memory的解決方案

    關(guān)于CUDA out of memory的解決方案

    這篇文章主要介紹了關(guān)于CUDA out of memory的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Hadoop中的Python框架的使用指南

    Hadoop中的Python框架的使用指南

    這篇文章主要介紹了Hadoop中的Python框架的使用指南,Hadoop一般使用復(fù)雜的Java操作,但通過(guò)該框架使得Python腳本操作Hadoop成為了可能,需要的朋友可以參考下
    2015-04-04
  • Python工程師面試必備25條知識(shí)點(diǎn)

    Python工程師面試必備25條知識(shí)點(diǎn)

    這篇文章主要為大家詳細(xì)介紹了Python工程師面試必備25條知識(shí)點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python程序暫停的正常處理方法

    Python程序暫停的正常處理方法

    這篇文章主要介紹了Python程序暫停的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • numba提升python運(yùn)行速度的實(shí)例方法

    numba提升python運(yùn)行速度的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于numba提升python運(yùn)行速度的實(shí)例方法,有興趣的朋友們可以參考下。
    2021-01-01
  • python 畫出使用分類器得到的決策邊界

    python 畫出使用分類器得到的決策邊界

    這篇文章主要介紹了python 畫出使用分類器得到的決策邊界,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python使用Matplotlib畫餅圖

    python使用Matplotlib畫餅圖

    這篇文章主要介紹了python使用Matplotlib畫餅圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法

    詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法

    這篇文章主要介紹了詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解python中@的用法

    詳解python中@的用法

    這篇文章主要介紹了python中@的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究

    Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究

    這篇文章主要為大家介紹了Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論