電影《長津湖》是今年電影界的神,其他的不說,我來爬些豆瓣對長津湖的短評看看,暫時不做可視化。
""" 爬取一下豆瓣的長津湖短評,爬取短評的六個內容: 評論人,是否看過,星級(推薦力度),時間,獲贊數,評論內容 將爬取的內容存儲到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的格式進行保存。
懶了,有空再做這幾個。