python实例:自动爬取豆瓣读书短评,分析短评内容
思路:
1、打开书本“更多”短评,复制链接
2、脚本分析链接,通过获取短评数,计算出页码数
3、通过页码数,循环爬取当页短评
4、短评写入到txt文本
5、读取txt文本,处理文本,输出出现频率最高的词组(前X)----通过分析得到其他结果可自由发散
用到的库:
lxml 、re、jieba、time
整个脚本如下
# -*-coding:utf8-*-
# encoding:utf-8
#豆瓣每页20条评论 import requests
from lxml import etree
import re
import jieba
import time firstlink = "https://book.douban.com/subject/30193594/comments/" def stepc(firstlink):#获取评论条数
url=firstlink
response = requests.get(url=url)
wb_data = response.text
html = etree.HTML(wb_data)
a = html.xpath('//*[@id="total-comments"]/text()')
return(a)
a=stepc(firstlink)
c=re.sub(r'\D', "", a[0])#返回评论数筛选数字
d=int(int(c)/20+1)#通过评论数计算出页码数,评论数/20+1
print("当前评论有"+ str(d) +"页,请耐心等待") def stepa (firstlink,d):#读取评论内容
content=[]
for page in range(1,d):
url=firstlink+"hot?p"+str(page)
response = requests.get(url=url)
wb_data = response.text
html = etree.HTML(wb_data)
a = html.xpath('//*[@id="comments"]//div[2]/p/span/text()')
content.append(a)
return(content)
a=stepa (firstlink,d) def stepb(a):#写入txt
for b in a:
for c in b:
with open('C:/Users/Beckham/Desktop/python/2.txt', 'a',encoding='utf-8') as w:
w.write('\n'+c)
w.close()
stepb(a)
print("完成评论爬取,接下来分析关键字")
time.sleep(5) def stepd():#分析评论
txt=open("C:\\Users\\Beckham\\Desktop\\python\\2.txt","r", encoding='utf-8').read() #打开倚天屠龙记文本
exculdes={} #创建字典,主要用于存储非人物名次,供后面剔除使用
words=jieba.lcut(txt) #jieba库分析文本
counts={}
for word in words: #筛选分析后的词组
if len(word)==1: #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束点读取的汉字书为1的内容
continue
else:
word=word
counts[word]=counts.get(word,0)+1 #对word出现的频率进行统计,当word不在words时,返回值是0,当rword在words中时,返回+1,以此进行累计计数
for word in exculdes:#如果循环读取到的词组与exculdes字典内的内容匹配,那么过滤掉(不显示)这个词组
del(counts[word])
items=list(counts.items())#字典到列表
items.sort(key=lambda x:x[1],reverse=True)#lambda是一个隐函数,是固定写法,以下命令的意思就是按照记录的第2列排序
for i in range(15):#显示前15位数据
word,count=items[i]
print("{0:<10}{1:>10}".format(word,count)) #0:<10左对齐,宽度10,”>10"右对齐
stepd()
print("分析完成")
执行结果

需要注意的是,如果频繁执行这个脚本,豆瓣会认为ip访问过多,弹出需要登录的页面

其他解析,在脚本内有注释
python实例:自动爬取豆瓣读书短评,分析短评内容的更多相关文章
- Python爬取豆瓣指定书籍的短评
Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...
- python爬虫:利用正则表达式爬取豆瓣读书首页的book
1.问题描述: 爬取豆瓣读书首页的图书的名称.链接.作者.出版日期,并将爬取的数据存储到Excel表格Douban_I.xlsx中 2.思路分析: 发送请求--获取数据--解析数据--存储数据 1.目 ...
- 如何手动写一个Python脚本自动爬取Bilibili小视频
如何手动写一个Python脚本自动爬取Bilibili小视频 国庆结束之余,某个不务正业的码农不好好干活,在B站瞎逛着,毕竟国庆嘛,还让不让人休息了诶-- 我身边的很多小伙伴们在朋友圈里面晒着出去游玩 ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- Python爬虫实例:爬取豆瓣Top250
入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...
- Python爬虫爬取豆瓣读书
一,准备工作. 工具:win10+Python3.6 爬取目标:爬取图中红色方框的内容. 原则:能在源码中看到的信息都能爬取出来. 信息表现方式:CSV转Excel. 二,具体步骤. 先给出具体代码吧 ...
- 【python数据挖掘】爬取豆瓣影评数据
概述: 爬取豆瓣影评数据步骤: 1.获取网页请求 2.解析获取的网页 3.提速数据 4.保存文件 源代码: # 1.导入需要的库 import urllib.request from bs4 impo ...
- Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析
上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...
- Python爬虫8-ajax爬取豆瓣影榜
GitHub代码练习地址:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac12_ajax.py 了解ajax 是一种异步请 ...
随机推荐
- 2019前端学习路线心得-黑马程序员pink老师
在规划之前先给大家分享几点心得哈: 1. 学习,特别是在线学习,是非常辛苦的事情,为了少走弯路, 所以一定要系统学习,多借鉴与前辈们总结出来的经验. 2. 不要相信任何说 一周掌握 css, 一周学完 ...
- sklearn各种分类器简单使用
sklearn中有很多经典分类器,使用非常简单:1.导入数据 2.导入模型 3.fit--->predict 下面的示例为在iris数据集上用各种分类器进行分类: #用各种方式在iris数据集上 ...
- pandas数据分析小知识点(一)
最近工作上,小爬经常需要用python做一些关于excel数据分析的事情,显然,从性能和拓展性的角度出发,使用pandas.numpy是比vba更好的选择.因为pandas能提供诸如SQL的很多查找. ...
- java 使用 apoi 更新 ppt 中图表的数据
本文源码: 1. https://github.com/zhongchengyi/zhongcy.demos/tree/master/apoi-ppt-chart 2. 在第5节也有核心源码 1 ...
- C# event 事件
事件第二篇:https://www.cnblogs.com/FavoriteMango/p/11731485.html 曾经面试碰到一道设计题: 现有一个人,一群鸟,人有一把手枪,当人开枪时,所有的鸟 ...
- TemplateMethodPattern(模板方法模式)-----Java/.Net
一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计模式属于行为型模式
- 小小知识点(三十八)MPSK和MQAM调制的实现——利用IQ调制
IQ调制的原理 (一)调制基本原理 (二)调制基本原理 利用IQ调制实现MPSK(QPSK 8PSK BPSK)和MQAM(16QAM 64QAM)调制 (一)利用IQ调制实现QPSK调制 ...
- webpack4的配置你都掌握了么?
webpack5都出了,webpack4的的基本配置,解析ES6,引入CSS,编译Less,设置image等等,你都会了么? 解析ES6 了解Babel Babel是一个JavaScript编译器, ...
- 使用vue-baidu-map解析geojson
这是后台给我的gejson: {"type":"FeatureCollection","features":[{"type&quo ...
- 变量内容的删除、取代与替换(optional)
这部分内容非常繁琐且不易记忆且枯燥,用到来查询即可. 1.变量内容的删除 这一部分比较细枝末节,就不再一一手打了,贴范例图片 #:符合取代文字的最短的一个 ##:符合取代文字的最长的一个 2.变量内容 ...