@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()

哪吒之魔童降世——豆瓣电影评论爬虫相关推荐

  1. 《哪吒之魔童降世》电影密钥延期至9月26日,将冲击中国票房总榜前三

    8月15日消息,电影<哪吒之魔童降世>联合发行方华夏电影发布通知称,根据片方需求,本片所有版本全国密钥延期,延期密钥期限为2019年8月27日至9月26日. 据猫眼专业版显示,该部电影自7 ...

  2. python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...

    前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...

  3. 哪吒之魔童降世视听语言影评_豆瓣评分8.7,这个“新哪吒”不一般|《哪吒之魔童降世》影评...

    <哪吒之魔童降世>的喜剧表达和暴力美学,不影响主题的深度思索,创造了国漫不断摸高的纪录. 国产动画<哪吒之魔童降世>将道家的阴阳哲学铺展得淋漓尽致,色彩饱满.角色热血沸腾.精神 ...

  4. 电影「哪吒之魔童降世」免 费 高 清 完 整 版 在 线 观 看

    近几年来,国产动漫有了长足的进步,除了动画这边出了很多优秀作品,在动画大电影上也有很大的进步.近日,一部名为<哪吒之魔童降世>的国产动画电影上映了,这部作品此前在宣传的时候被观众们喷了个狗 ...

  5. python画哪吒_Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评

    前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...

  6. Python爬取豆瓣《哪吒之魔童降世》影评

    这几天朋友圈,微博都被<哪吒之魔童降世>这部电影刷屏了,有人说它是"国漫之光",上映4天,票房已经突破9亿了.口碑上,影片自点映开分以来,口碑连续十天稳居所有在映影片榜 ...

  7. 奥斯卡“最佳国际电影”奖,《哪吒之魔童降世》申请出战!

    10月8日消息,据外媒报道,美国电影艺术与科学学院日前公布了申请角逐明年奥斯卡"最佳国际电影"奖(原最佳外语片奖)的名单,共有93个国家和地区选送影片,中国内地选送的影片为动画电影 ...

  8. 《哪吒之魔童降世》观影人次突破1亿大关 为动画电影之最!

    8月13日消息,据猫眼电影发布的微博显示,上映第19天,<哪吒之魔童降世>观影人次突破1亿大关.据悉,<哪吒之魔童降世>是有数据统计以来,继<战狼2><流浪地 ...

  9. EA周报 | 字节跳动上线搜索引擎;电影《哪吒之魔童降世》累计综合票房破15亿;鸿蒙系统首发设备欲屏蔽开机广告...

    EA周报 2019年8月2日 每周星期五7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 热点大事件 字节跳动回应打造全网搜索引擎:已上线,可在今日头条试用 8月1日中午,字节跳 ...

最新文章

  1. 十年磨一剑!程序员老兵成新将
  2. 关于bcp的那些事儿
  3. windows server 网络负载均衡配置
  4. 一、Git 多人协作模拟实战
  5. 强化学习在推荐混排中的应用
  6. 公司这套架构统一处理try...catch这么香,求求你不要再满屏写了,再发现扣绩效!...
  7. Java - JSP和Servlet是什么关系?
  8. 《程序员修炼之道--从小工到专家》读书笔记
  9. 高德地图--水波雷达动画
  10. 电脑更改IP地址后,Oracle数据库需要重新配置IP问题(一招搞定,永久有效)
  11. 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了~【程序员编程】
  12. 装了xmapp还需要装mysql吗_安装xamp之后,appach、mysql等问题的总结
  13. 基于对立非洲秃鹫优化算法求解单目标优化问题(OAVOA)含Matlab代码
  14. 将秒针声音加入JAVA_喜马拉雅联合秒针系统发布声音流广告报告
  15. 「卷无人道」,手机app定制
  16. SQL企业管理器打不开
  17. 姿态检测 树莓派_基于深度学习的树莓派老人摔倒检测系统的制作方法
  18. sqli-Labs————less-44
  19. 网络代理导致浏览器的问题解决方法
  20. 2只继电器控制三相电机正反转

热门文章

  1. JavaScript 数组删除元素 避坑
  2. AJAX怎么实现同步请求?Ajax同步和异步请求有什么区别以及使用场景有哪些?
  3. Oracle数据卫士Dataguard原理,部署及维护
  4. 为什么禁用拷贝(复制)构造函数
  5. 事件委托——前端面试
  6. Word2Vec 增量训练
  7. Oracle PL/SQL 存储过程
  8. 导柱导向机构设计的注意事项
  9. 思科企业路由器受高危DoS漏洞影响
  10. [NOIP2015 提高组] 神奇的幻方