爬取豆瓣電影-長津湖短評 - Python


電影《長津湖》是今年電影界的神,其他的不說,我來爬些豆瓣對長津湖的短評看看,暫時不做可視化。

"""
    爬取一下豆瓣的長津湖短評,爬取短評的六個內容:
        評論人,是否看過,星級(推薦力度),時間,獲贊數,評論內容
    將爬取的內容存儲到csv文檔中
"""

import requests
# from bs4 import BeautifulSoup
import parsel
import csv

# 首先建立csv文檔
csvFile = open('長津湖豆瓣短評.csv', mode='a', encoding='utf-8-sig', newline='')

csvWriter = csv.DictWriter(csvFile, fieldnames=[
    '評論人',
    '是否看過',
    '推薦力度',
    '評論時間',
    '獲贊數量',
    '評論內容',
])
# 先寫頭
csvWriter.writeheader() #寫入表頭

# 接下來是爬取數據
# 先建立header
headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
}


# url規律,變化在start=的數字
# url = f'https://movie.douban.com/subject/25845392/comments?start={page}&limit=20&status=P&sort=new_score'

# 開始請求網頁
for page in range(0, 120, 20): # 我這里就爬六頁
    url = f'https://movie.douban.com/subject/25845392/comments?start={page}&limit=20&status=P&sort=new_score'
    response = requests.get(url, headers=headers) # 通過開發者工具,發現請求是get的,我這里就用get的
    response.encoding = response.apparent_encoding
    response.raise_for_status()
    response.encoding = 'utf-8'
    selector = parsel.Selector(response.text)

    allData = selector.css('#comments div.comment-item')
    for item in allData:
        user = item.css('.comment-info a::text').get() # 獲取評論人的名稱
        islook = item.css('.comment-info span::text').get() # 是否看過
        # islook = item.css('.comment-info span:nth-child(2)::text').get() # 是否看過
        isrecommended = item.css('.comment-info span::attr(title)').get() # 推薦力度
        # isrecommended = item.css('.comment-info span:nth-child(3)::attr(title)').get()  # 推薦力度
        ratetime = item.css('.comment-info span:nth-child(4)::attr(title)').get().strip() # 評論時間
        # followers = item.css('.comment-vote span::text').get() # 點贊數量
        followers = item.css('.comment-vote span::text').get() # 點贊數量
        print(followers)
        # content = item.css('.comment-content .short::text').get() # 評論內容
        content = item.css('.comment-content span::text').get()

        csvwriterdict = {
            '評論人': user,
            '是否看過': islook,
            '推薦力度': isrecommended,
            '評論時間': ratetime,
            '獲贊數量': followers,
            '評論內容': content,
        }
        print(csvwriterdict)
        # 將上面的字典寫入到csv文檔
        csvWriter.writerow(csvwriterdict)

csvFile.close() # 關閉文件

  

本來想用bs4爬的,看到某大神用parsel進行數據解析,學習下。存儲的效果如下:

 

留幾個問題,作為自己的動力。

1,用bs4或者selenium重新爬一次上面的項目;

2,做些可視化;

3,利用pandas的格式進行保存。

懶了,有空再做這幾個。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM