91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python怎么爬取豆瓣電影排行信息

發布時間:2021-11-23 11:36:13 來源:億速云 閱讀:307 作者:iii 欄目:大數據

這篇文章主要講解了“Python怎么爬取豆瓣電影排行信息”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python怎么爬取豆瓣電影排行信息”吧!

基本開發環境

  • Python 3.6

  • Pycharm

相關模塊的使用

  • requests

  • parsel

  • csv

安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。

爬蟲基本思路

Python怎么爬取豆瓣電影排行信息

請求url地址,使用get請求,添加headers請求頭,模擬瀏覽器請求,網頁會給你返回response對象

# 模擬瀏覽器發送請求
import requests
url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response)

Python怎么爬取豆瓣電影排行信息


200是狀態碼,表示請求成功

2xx (成功)
3xx (重定向)
4xx(請求錯誤)
5xx(服務器錯誤)

常見狀態碼

  • 200 - 服務器成功返回網頁,客戶端請求已成功。

  • 302 - 對象臨時移動。服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。

  • 304 - 屬于重定向。自上次請求后,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。

  • 401 - 未授權。請求要求身份驗證。 對于需要登錄的網頁,服務器可能返回此響應。

  • 404 - 未找到。服務器找不到請求的網頁。

  • 503 (服務不可用) 服務器目前無法使用(由于超載或停機維護)。通常,這只是暫時狀態。

三、獲取數據

import requests
url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response.text)

Python怎么爬取豆瓣電影排行信息

四、解析數據

常用解析數據方法: 正則表達式、css選擇器、xpath、lxml…

常用解析模塊:bs4、parsel…

我們使用的是 parsel 無論是在之前的文章,還是說之后的爬蟲系列文章,我都會使用 parsel 這個解析庫,無它就是覺得它比bs4香。

parsel 是第三方模塊,pip install parsel 安裝即可

parsel 可以使用 css、xpath、re解析方法


所有的電影信息都包含在 li 標簽當中。

# 把 response.text 文本數據轉換成 selector 對象
selector = parsel.Selector(response.text)
# 獲取所有li標簽
lis = selector.css('.grid_view li')
# 遍歷出每個li標簽內容
for li in lis:
    # 獲取電影標題 hd 類屬性 下面的 a 標簽下面的 第一個span標簽里面的文本數據 get()輸出形式是 字符串獲取一個  getall() 輸出形式是列表獲取所有
    title = li.css('.hd a span:nth-child(1)::text').get()   # get()輸出形式是 字符串
    movie_list = li.css('.bd p:nth-child(1)::text').getall()     # getall() 輸出形式是列表
    star = movie_list[0].strip().replace('\xa0\xa0\xa0', '').replace('/...', '')
    movie_info = movie_list[1].strip().split('\xa0/\xa0')   # ['1994', '美國', '犯罪 劇情']
    movie_time = movie_info[0]  # 電影上映時間
    movie_country = movie_info[1]   # 哪個國家的電影
    movie_type = movie_info[2]     # 什么類型的電影
    rating_num = li.css('.rating_num::text').get()   # 電影評分
    people = li.css('.star span:nth-child(4)::text').get()   # 評價人數
    summary = li.css('.inq::text').get()   # 一句話概述
    dit = {
        '電影名字': title,
        '參演人員': star,
        '上映時間': movie_time,
        '拍攝國家': movie_country,
        '電影類型': movie_type,
        '電影評分': rating_num,
        '評價人數': people,
        '電影概述': summary,
    }
    # pprint 格式化輸出模塊
    pprint.pprint(dit)

Python怎么爬取豆瓣電影排行信息


以上的知識點使用到了

  • parsel 解析模塊的方法

  • for 循環

  • css 選擇器

  • 字典的創建

  • 列表取值

  • 字符串的方法:分割、替換等

  • pprint 格式化輸出模塊

所以扎實基礎是很有必要的。不然你連代碼都不知道為什么要這樣寫。

五、保存數據(數據持久化)

常用的保存數據方法 with open

像豆瓣電影信息這樣的數據,保存到Excel表格里面會更好。

所以需要使用到 csv 模塊

# csv模塊保存數據到Excel
f = open('豆瓣電影數據.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['電影名字', '參演人員', '上映時間', '拍攝國家', '電影類型',
                                           '電影評分', '評價人數', '電影概述'])

csv_writer.writeheader()    # 寫入表頭

Python怎么爬取豆瓣電影排行信息


這就是爬取了數據保存到本地了。這只是一頁的數據,爬取數據肯定不只是爬取一頁數據。想要實現多頁數據爬取,就要分析網頁數據的url地址變化規律。


可以清楚看到每頁url地址是 25 遞增的,使用for循環實現翻頁操作

for page in range(0, 251, 25):
    url = f'https://movie.douban.com/top250?start={page}&filter='

完整實現代碼

""""""
import pprint
import requests
import parsel
import csv
'''
1、明確需求:
    爬取豆瓣Top250排行電影信息
        電影名字
        導演、主演
        年份、國家、類型
        評分、評價人數
        電影簡介
'''
# csv模塊保存數據到Excel
f = open('豆瓣電影數據.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['電影名字', '參演人員', '上映時間', '拍攝國家', '電影類型',
                                           '電影評分', '評價人數', '電影概述'])

csv_writer.writeheader()    # 寫入表頭

# 模擬瀏覽器發送請求
for page in range(0, 251, 25):
    url = f'https://movie.douban.com/top250?start={page}&filter='
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    # 把 response.text 文本數據轉換成 selector 對象
    selector = parsel.Selector(response.text)
    # 獲取所有li標簽
    lis = selector.css('.grid_view li')
    # 遍歷出每個li標簽內容
    for li in lis:
        # 獲取電影標題 hd 類屬性 下面的 a 標簽下面的 第一個span標簽里面的文本數據 get()輸出形式是 字符串獲取一個  getall() 輸出形式是列表獲取所有
        title = li.css('.hd a span:nth-child(1)::text').get()   # get()輸出形式是 字符串
        movie_list = li.css('.bd p:nth-child(1)::text').getall()     # getall() 輸出形式是列表
        star = movie_list[0].strip().replace('\xa0\xa0\xa0', '').replace('/...', '')
        movie_info = movie_list[1].strip().split('\xa0/\xa0')   # ['1994', '美國', '犯罪 劇情']
        movie_time = movie_info[0]  # 電影上映時間
        movie_country = movie_info[1]   # 哪個國家的電影
        movie_type = movie_info[2]     # 什么類型的電影
        rating_num = li.css('.rating_num::text').get()   # 電影評分
        people = li.css('.star span:nth-child(4)::text').get()   # 評價人數
        summary = li.css('.inq::text').get()   # 一句話概述
        dit = {
            '電影名字': title,
            '參演人員': star,
            '上映時間': movie_time,
            '拍攝國家': movie_country,
            '電影類型': movie_type,
            '電影評分': rating_num,
            '評價人數': people,
            '電影概述': summary,
        }
        pprint.pprint(dit)
        csv_writer.writerow(dit)

實現效果

Python怎么爬取豆瓣電影排行信息

感謝各位的閱讀,以上就是“Python怎么爬取豆瓣電影排行信息”的內容了,經過本文的學習后,相信大家對Python怎么爬取豆瓣電影排行信息這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

万源市| 诏安县| 如东县| 专栏| 海兴县| 铜鼓县| 资阳市| 夏河县| 噶尔县| 临沂市| 缙云县| 讷河市| 正定县| 佛冈县| 芦溪县| 合水县| 长海县| 咸宁市| 永嘉县| 阆中市| 云林县| 资溪县| 贵溪市| 兴安盟| 洞头县| 蚌埠市| 高平市| 平遥县| 万全县| 喀喇沁旗| 黄浦区| 临武县| 衡阳市| 闵行区| 芦溪县| 扎赉特旗| 库伦旗| 吐鲁番市| 峨眉山市| 潼南县| 宝清县|