哪吒之魔童降世——豆瓣电影评论爬虫
@TOC哪吒之魔童降世——豆瓣电影评论爬虫
学校里的一个小作业,写个影评分析,网上搜了下资料,总结了一下,顺便修改了修改代码,亲自实测了下,因为需要登录才能爬取,所以设定了些模拟登陆,但是即使登录之后,也只能查看前500条,数据量少怎么办呢,一是两个月后爬一次,再就是爬取了想看VS看过两种评论能爬取到的最新评论(1000条),第一次发博客,如有问题请多见谅…
###想看的人的所有评论
# coding=utf-8
import requests
from bs4 import BeautifulSoup
import csv
import time
from selenium import webdriver
import codecs #可以提前以“ab+”的方式打开文件# 明确模拟浏览器在电脑中存放的位置
chromePath = r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
wd = webdriver.Chrome(executable_path= chromePath)
loginUrl = 'https://movie.douban.com/'
wd.get(loginUrl)time.sleep(3)
wd.find_element_by_xpath('//*[@id="db-global-nav"]/div/div[1]/a').click() time.sleep(3)
wd.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click() time.sleep(3)
wd.find_element_by_xpath('//*[@id="username"]').send_keys('***手机号***')
time.sleep(3)
wd.find_element_by_xpath('//*[@id="password"]').send_keys('***密码***')time.sleep(3)
wd.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a').click() # 选择
time.sleep(3)
wd.find_element_by_xpath('//*[@id="inp-query"]').send_keys('哪吒之魔童降世')time.sleep(3)
wd.find_element_by_xpath('//*[@id="db-nav-movie"]/div[1]/div/div[2]/form/fieldset/div[2]/input').click() #若是按钮time.sleep(3)
wd.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div/div/div[1]/a').click()time.sleep(5)
wd.find_element_by_xpath('//*[@id="comments-section"]/div[1]/h2/span/a').click()
time.sleep(5)
wd.find_element_by_xpath('//*[@id="content"]/div/div[1]/div[1]/ul/li[2]/a').click()
time.sleep(5)# 将selenium的 cookies 传入requests
# 导入requests库,并构建Session()
req = requests.Session()
# 从‘wd'里调出cookies
cookies = wd.get_cookies()
# 将selenium形式的cookies转换为requests可用的cookies。
for cookie in cookies:req.cookies.set(cookie['name'],cookie['value'])wd.close()# 《哪吒之魔童降世》豆瓣评论地址
url = 'https://movie.douban.com/subject/26794435/comments?status=F'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}with open("D:\\哪吒_想看.csv","ab+") as f:f.write(codecs.BOM_UTF8)#,第一次打开,这为了防止在Windows下打开CSV文件出现乱码
f = open("D:\\哪吒_想看.csv",'a+',newline='',encoding='utf-8')#第二次打开,开始写入数据
writer = csv.writer(f)
writer.writerow(['用户名','是否看过', '评论日期', '评星', '赞成数', '评论内容'])# 请求网站
html = req.get(url, headers=headers)
i = 0
while html.status_code == 200:#print(html.text)# 生成BeautifulSoup对象soup = BeautifulSoup(html.text, 'lxml')comment = soup.find_all('div',{'class':"comment"})# 解析每一个class为comment的div中的内容for com in comment:user = com.find('span',{'class':"comment-info"})username = user.a.string.strip()commentinfo = com.find(class_='comment-info')looker = commentinfo.span.text.strip()commenttime = com.find('span',{'class':"comment-time"})times = commenttime.get('title') rating = com.find(class_='allstar40_rating')if rating != None:rate = rating.get('title')else:rate = 'None'vote = com.find(class_='votes')votes = vote.stringcomment = com.p.span.stringtry:writer.writerow([username,looker,times, rate, votes, comment])except Exception as err:print (err)time.sleep(3)# 下一页nextstring = soup.find(class_='next').get('href')nexturl = 'https://movie.douban.com/subject/26794435/comments' + nextstringhtml = req.get(nexturl, headers=headers)i += 1print('######################已爬取{}页评论,链接为:\n{}######################'.format(i,nexturl))f.close()
爬取结果如图所示
下面是看过的人的评论,只是修改了下登陆URL以及路径等等
###想看的人的所有评论
# coding=utf-8
import requests
from bs4 import BeautifulSoup
import csv
import time
from selenium import webdriver
import codecs #可以提前以“ab+”的方式打开文件# 明确模拟浏览器在电脑中存放的位置
chromePath = r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
wd = webdriver.Chrome(executable_path= chromePath)
loginUrl = 'https://movie.douban.com/'
wd.get(loginUrl)time.sleep(3)
wd.find_element_by_xpath('//*[@id="db-global-nav"]/div/div[1]/a').click() time.sleep(3)
wd.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click() time.sleep(3)
wd.find_element_by_xpath('//*[@id="username"]').send_keys('***手机号***')
time.sleep(3)
wd.find_element_by_xpath('//*[@id="password"]').send_keys('***密码***')time.sleep(3)
wd.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a').click() # 选择
time.sleep(3)
wd.find_element_by_xpath('//*[@id="inp-query"]').send_keys('哪吒之魔童降世')time.sleep(3)
wd.find_element_by_xpath('//*[@id="db-nav-movie"]/div[1]/div/div[2]/form/fieldset/div[2]/input').click() #若是按钮time.sleep(3)
wd.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div/div/div[1]/a').click()time.sleep(5)
wd.find_element_by_xpath('//*[@id="comments-section"]/div[1]/h2/span/a').click()
time.sleep(5)req = requests.Session()
cookies = wd.get_cookies()
for cookie in cookies:req.cookies.set(cookie['name'],cookie['value'])wd.close()# 《哪吒之魔童降世》豆瓣评论地址
url = 'https://movie.douban.com/subject/26794435/comments?status=P'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}with open("D:\\哪吒_看过.csv","ab+") as f:f.write(codecs.BOM_UTF8)#防止在Windows下打开CSV文件出现乱码
f = open("D:\\哪吒_看过.csv",'a+',newline='',encoding='utf-8')#第二次打开,开始写入数据
writer = csv.writer(f)
writer.writerow(['用户名','是否看过', '评论日期', '评星', '赞成数', '评论内容'])# 请求网站
html = req.get(url, headers=headers)
i = 0
while html.status_code == 200:#print(html.text)# 生成BeautifulSoup对象soup = BeautifulSoup(html.text, 'lxml')comment = soup.find_all('div',{'class':"comment"})# 解析每一个class为comment的div中的内容for com in comment:user = com.find('span',{'class':"comment-info"})username = user.a.string.strip()commentinfo = com.find(class_='comment-info')looker = commentinfo.span.text.strip()commenttime = com.find('span',{'class':"comment-time"})times = commenttime.get('title') rating = com.find(class_='allstar40_rating')if rating != None:rate = rating.get('title')else:rate = 'None'vote = com.find(class_='votes')votes = vote.stringcomment = com.p.span.stringtry:writer.writerow([username,looker,times, rate, votes, comment])except Exception as err:print (err)time.sleep(3)# 下一页nextstring = soup.find(class_='next').get('href')nexturl = 'https://movie.douban.com/subject/26794435/comments' + nextstringhtml = req.get(nexturl, headers=headers)i += 1print('######################已爬取{}页评论,链接为:\n{}######################'.format(i,nexturl))f.close()
哪吒之魔童降世——豆瓣电影评论爬虫相关推荐
- 《哪吒之魔童降世》电影密钥延期至9月26日,将冲击中国票房总榜前三
8月15日消息,电影<哪吒之魔童降世>联合发行方华夏电影发布通知称,根据片方需求,本片所有版本全国密钥延期,延期密钥期限为2019年8月27日至9月26日. 据猫眼专业版显示,该部电影自7 ...
- python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...
前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...
- 哪吒之魔童降世视听语言影评_豆瓣评分8.7,这个“新哪吒”不一般|《哪吒之魔童降世》影评...
<哪吒之魔童降世>的喜剧表达和暴力美学,不影响主题的深度思索,创造了国漫不断摸高的纪录. 国产动画<哪吒之魔童降世>将道家的阴阳哲学铺展得淋漓尽致,色彩饱满.角色热血沸腾.精神 ...
- 电影「哪吒之魔童降世」免 费 高 清 完 整 版 在 线 观 看
近几年来,国产动漫有了长足的进步,除了动画这边出了很多优秀作品,在动画大电影上也有很大的进步.近日,一部名为<哪吒之魔童降世>的国产动画电影上映了,这部作品此前在宣传的时候被观众们喷了个狗 ...
- python画哪吒_Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评
前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...
- Python爬取豆瓣《哪吒之魔童降世》影评
这几天朋友圈,微博都被<哪吒之魔童降世>这部电影刷屏了,有人说它是"国漫之光",上映4天,票房已经突破9亿了.口碑上,影片自点映开分以来,口碑连续十天稳居所有在映影片榜 ...
- 奥斯卡“最佳国际电影”奖,《哪吒之魔童降世》申请出战!
10月8日消息,据外媒报道,美国电影艺术与科学学院日前公布了申请角逐明年奥斯卡"最佳国际电影"奖(原最佳外语片奖)的名单,共有93个国家和地区选送影片,中国内地选送的影片为动画电影 ...
- 《哪吒之魔童降世》观影人次突破1亿大关 为动画电影之最!
8月13日消息,据猫眼电影发布的微博显示,上映第19天,<哪吒之魔童降世>观影人次突破1亿大关.据悉,<哪吒之魔童降世>是有数据统计以来,继<战狼2><流浪地 ...
- EA周报 | 字节跳动上线搜索引擎;电影《哪吒之魔童降世》累计综合票房破15亿;鸿蒙系统首发设备欲屏蔽开机广告...
EA周报 2019年8月2日 每周星期五7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 热点大事件 字节跳动回应打造全网搜索引擎:已上线,可在今日头条试用 8月1日中午,字节跳 ...
最新文章
- 十年磨一剑!程序员老兵成新将
- 关于bcp的那些事儿
- windows server 网络负载均衡配置
- 一、Git 多人协作模拟实战
- 强化学习在推荐混排中的应用
- 公司这套架构统一处理try...catch这么香,求求你不要再满屏写了,再发现扣绩效!...
- Java - JSP和Servlet是什么关系?
- 《程序员修炼之道--从小工到专家》读书笔记
- 高德地图--水波雷达动画
- 电脑更改IP地址后,Oracle数据库需要重新配置IP问题(一招搞定,永久有效)
- 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了~【程序员编程】
- 装了xmapp还需要装mysql吗_安装xamp之后,appach、mysql等问题的总结
- 基于对立非洲秃鹫优化算法求解单目标优化问题(OAVOA)含Matlab代码
- 将秒针声音加入JAVA_喜马拉雅联合秒针系统发布声音流广告报告
- 「卷无人道」,手机app定制
- SQL企业管理器打不开
- 姿态检测 树莓派_基于深度学习的树莓派老人摔倒检测系统的制作方法
- sqli-Labs————less-44
- 网络代理导致浏览器的问题解决方法
- 2只继电器控制三相电机正反转