爬取豆瓣电影前十页的好评一般差评
分析一波
爬取的地址:https://movie.douban.com/subject/26588308/comments
分别找出好评、一般、差评的评论:
- 通过地址栏分析,评论的类型和percent_type有关:
- 好评为h
- 一般为m
- 差评为l
但是我们想找的是在全部里面寻找好评一般和差评,所以这种方法就不适用了。
但是我们发现每个评论都会有小星星,星星的个数就可以区分评论的类型了。
- 好评为5颗星或4颗星
- 一般为3颗星
- 差评为2颗星或者1颗星
这里对应的标签为span(class就是星星的个数)
所以可以获取到每一个comment-item,然后判断里面allstarXX是多少,再把评论分类就可以了。
代码
#找出10页里的好评,一般或差评
import urllib.request
from bs4 import BeautifulSoup
import timeabsolute = "https://movie.douban.com/subject/26588308/comments"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
}
comment_list_h = [] #好评
comment_list_m = [] #一般
comment_list_l = [] #差评#解析html
def get_data(html):soup = BeautifulSoup(html,'lxml')if soup.string != None:return 0else:div = soup.findAll(name="div",attrs={"class": "comment-item"}) #这里使用find_all不行for each in div:if each.find("span",attrs={"class":"allstar50"}) or each.find("span",attrs={"class":"allstar40"}):textword_h = each.find("span",attrs={"class":"short"}).textcomment_list_h.append(textword_h)if each.find("span",attrs={"class":"allstar30"}):textword_m = each.find("span", attrs={"class": "short"}).textcomment_list_m.append(textword_m)if each.find("span",attrs={"class":"allstar20"}) or each.find("span",attrs={"class":"allstar10"}):textword_l = each.find("span", attrs={"class": "short"}).textcomment_list_l.append(textword_l)#获取HTML
def get_html(absolute,i):url = absolute + '?start=' + str(i) + '&limit=20&status=P&sort=new_score'print(url)request = urllib.request.Request(url=url, headers=headers)html = urllib.request.urlopen(request).read().decode("UTF-8")flag = get_data(html)if flag == 0:return 0#将数据写入文件
def save_txt(h,m,l):with open("comment_type.txt","w",newline='',encoding="utf-8") as f:j = 1f.write('好评:')f.write("\n")for i in h:f.write('('+ str(j) + ')' +i)f.write("\n")j+=1f.write('一般:')f.write("\n")k = 1for i in m:f.write('(' + str(k) + ')' + i)f.write("\n")k += 1f.write('差评:')f.write("\n")p = 1for i in l:f.write('(' + str(p) + ')' + i)f.write("\n")p += 1if __name__ == '__main__':i = 0for j in range(0,10):flag = get_html(absolute,i)time.sleep(2)i += 20if flag==0:breaksave_txt(comment_list_h,comment_list_m,comment_list_l)
爬取豆瓣电影前十页的好评一般差评相关推荐
- 使用Selenium爬取豆瓣电影前100的爱情片相关信息
slenium入门小练手之使用Selenium爬取豆瓣电影前100的爱情片相关信息 文章目录 什么是Selenium 1.准备工作 1.1 安装Selenium 1.2 浏览器驱动安装 1.3 环境变 ...
- 多进程爬取豆瓣电影前100,将数据导出为Excel表
之前学习爬虫时,自己尝试写代码爬取的爬取豆瓣前100的电影,现在发表出来便于自己回顾知识点,该代码爬取速度还是非常快的,但是就是因为设置多进程爬取后爬取时间过快,如果不设置随机时间,没有代理IP,爬取 ...
- Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息
在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...
- 爬取豆瓣电影排名前250部电影并且存入Mongo数据库
2019独角兽企业重金招聘Python工程师标准>>> 需求:爬取豆瓣电影top250(https://movie.douban.com/top250)的电影数据: 标题(title ...
- python爬虫(一)爬取豆瓣电影排名前50名电影的信息
python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...
- Python第一战:爬取豆瓣排名前250的电影
一.需求分析 爬取豆瓣电影Top250的基本信息,包括电影的名称.豆瓣评分.评价数.电影概况.电影链接等.(https://movie.douban.com/top250) 二.爬虫的定义 网 ...
- 爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250
2019独角兽企业重金招聘Python工程师标准>>> 所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的 ...
- jsoup爬取豆瓣电影top250
文章目录 0.准备工作 1. 分析 2. 构思 3. 编程 3.1 定义一个bean,用于保存电影的数据 3.2 按照之前的构思进行编程 4.效果图 5.获取资源 5.1GitHub 5.2百度云 0 ...
- python爬取豆瓣电影评论_python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法...
def getHtml(url): """获取url页面""" headers = {'User-Agent':'Mozilla/5.0 ( ...
最新文章
- nvm 装 nodejs 重启终端失效的解决方法
- python怎么写文件-Python读写文件
- vmware nat模式网络不通_笨笨狗教你如何解决VMware虚拟机桥接网络不通问题?
- Linux内存背后的那些神秘往事
- Sql Server 字段类型说明
- 华为Y9 Prime 2019曝光:无刘海无水滴全面屏+升降前摄
- web前端开发论文写作_2019学习Web开发指南
- qt之qthread的使用
- MATLAB常用画图命令汇总【已坑】
- 计算机与汉字+输入速度+云输入法,计算机汉字三码输入法的制作方法
- Linux服务器开发学习方法
- python日期运算_Python:日期计算器
- 微信开发之网页返回关闭浏览器
- 《重构:改善既有代码的设计》读书笔记(上)
- 关于PCM音频重采样思路及注意事项(频率变换和通道数变换(单通道转双通道))
- 概率统计Python计算:样本数据的经验分布函数
- 产业学院的制度逻辑及其政策意义
- mysql命令行进行数据导入和导出
- 测试数据准备之 CMD 命令:copy(指定尺寸图片1M放大成6M)
- 网络offload之TSO、GSO、LRO、GRO