作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075
一.把爬取的内容保存取MySQL数据库
1.爬取内容保存到数据库中的代码如下:
import sqlite3with sqlite3.connect(r'F:\fczlm\RX3.sqlite')as db: comdf.to_sql('RXE3',db)
2.SQL文件打开内容如下:
二.爬虫综合大作业
关于读者对《人性的弱点全集》短评的总体分析
导读:《人性的弱点全集》出版于1937年(中文版全集于2011年由中国华侨出版社出版发行),汇集了作者卡耐基的思想精华和最激动人心的内容,是作者最成功的励志经典。这部著作从人性本质的角度,挖掘出潜藏在人们体内的弱点,使人们能够充分的认识自己,并不断改造自己,从而能有所长进,直至最后的成功。该书的中文版的发行得到了不少读者的青睐,并引来了不少读者读书后的评价。此文通过读者对该书的评价情况来分析读者对该书的态度以及读者评价该书星级的心理。
爬取网页评价数据实现的代码如下:
import requestsfrom bs4 import BeautifulSoupimport pandas as pdheaders = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}st1_short_comment_Url = 'https://book.douban.com/subject/1056295/comments/'res = requests.get(st1_short_comment_Url,headers)res.encoding = 'utf-8'soup = BeautifulSoup(res.text, 'html.parser')all_list = []def comment_vote_star(str): if (str == '力荐'): return "五星" elif (str == "推荐"): return "四星" elif (str == "还行"): return "三星" elif (str == "较差"): return "二星" elif (str == "很差"): return "一星" elif (str == ""): return "未评价"def short_comment_each_page(each_page_url): # 获取短评的信息 res = requests.get(each_page_url,headers) res.encoding = 'utf-8' soup = BeautifulSoup(res.text, 'html.parser') for item in soup.select('li'): #time.sleep(random.random() * 1) # 设置爬取时间间隔 if len(item.select('.comment-info')) > 0: all_comment_dict = {} username = item.select('a')[0]['title'] comment_vote = item.select('span')[1].text comment_date = item.select('span')[3].text if (comment_date == ''): comment_date = item.select('span')[4].text star = comment_vote_star(item.select('span')[3]['title']) else: comment_star = item.select('span')[3].text star = comment_vote_star("") all_comment_dict['username'] = username # 用户名 all_comment_dict['vote'] = comment_vote # 点赞数 all_comment_dict['star'] = star # 评价的星级 all_comment_dict['date'] = comment_date # 评价的时间 all_comment_dict['short_comment'] = item.select('.short')[0].text # 评价的内容 all_list.append(all_comment_dict)for i in range(1, 333): short_comment_Url = 'https://book.douban.com/subject/1056295/comments/hot?p={}'.format(i) short_comment_each_page(short_comment_Url) print(i)comdf = pd.DataFrame(all_list) comdf.to_csv(r'F:\fczlm\RX.csv', encoding='utf_8_sig')
代码运行结果及爬取网页数据页数
数据说明:所有数据均来源于豆瓣读书;短评爬取页数为300+;因该书在豆瓣读书上的短评数量自有这么多,所以最终爬取数据总和为5000+条评价数据。
1.《人性的弱点全集》整体评价如何?
《人性的弱点全集》各级评星数量
(说明:未评价表示读者未给该书打星,而不是未给该书作文字评价,未评价仅表示未打星评价)
各级星数所占百分比
评价星数从1星—5星。1到5星星评分别表示读者对该书持非常差、差、一般、好、非常好的读评态度。从上图数据可以看到,大部分(72%)的读者给该书评价了4星以上,有37%的读者是给该书打了5星好评的;有20%的读者给改书打出了一般的评价;很小的一部分(8%)读者给该书打出2星及以下的评价。
以上的数据分析说明这本书总体来说还是受到读者欢迎的,大部分的读者对该书还是持较好的态度的;评1星、2星的读者所占评星评价的百分比和为8%,不大存在对该书刷恶意评价的情况。以上,根据读者的评星评价对《人性的弱点全集》的整体评价的分析。
2.《人性的弱点全集》评价时间走向分析
《人性的弱点全集》评价时间走向
数据图标显示,2005年10月-2010年12月时间段内,读者的线上评价数量为800条左右;2011年9月-2013年3月时间段内,读者的线上评价数量为1500多条;2013年12月-2016年2月时间段内,读者线上评价数量为700条左右;2016年11月-2019年2月时间段内,读者线上评价数量为1800条左右。其中评价数量最高的时间段是2017年8月-2018年5月份。
(说明:线上爬取所有的读者评价数据的日期都是有具体的年月日的,其中最早的一条评价是2005年10月19日的,最近的一条评价则为2019年4月27日的。只是为了方便统计才更改了日期的格式)
以上的评价时间走向数据分析,可以反映的一些问题。2005年-2010年五年时间内,《人性的弱点全集》线上的读者评价数量积累仅为800条左右,原因一:互联网普及及使用程度;原因二:该书的中文版正式出版发行时间是2011年9月份。所以因为互联网的普及以及书本资源获得的原因,该时间段5年内读者的评价数量积累仅为800条左右。而后,2011年9月份之后直至2019年的4月,读者的线上评价时间走向的数量值出现了走高—下跌—走高的趋势。根据实际的情况分析,2011年9月开始数值走高原因会是中文版的发行,读者的资源获得被丰富了,互联网也更进了一步发展。而后的走低会是受该书的热度以及读者的评价影响。评价数值的再度走高可能受到线上资源的获得以及一些社会因素的影响。
3.《人性的弱点全集》读者评价高低的理由是什么?
读者的高评价内容所生成的词云
读者对《人性的弱点全集》高评价的理由分析
(1) 读者觉得《人性的弱点全集》这本书很不错、经典、励志和真诚;是一本好书,看后会让人受益匪浅也很有用;
(2)该书值得一读,并且值得反复的阅读;通俗易懂还能学到很多的东西;
(3)受作者卡耐基的影响,读者们是卡耐基的书迷或者说喜欢卡耐基这个作者,所以喜欢看他的作品。
读者低评价内用所生成的词云
读者对《人性的弱点全集》低评价的理由分析
(1)读者觉得这本书是成功学的典型,充满了鸡汤的味道,把这本书比作鸡汤的鼻祖;
(2)读者认为作者所说的很多道理都对,但是做到就很难,所以反向不认同该书的内容;
(3)读者认为该书很乏味,很端正和官方,像是在读道德经一样,读不下去,不符合这部分读者的读书类型口味,所以给该书打了低评价。
小结
整体来说,读者对于《人性的弱点全集》还是持较好的态度的,读者还是认同该本书和书作者的;读者们认为这本书很不错、经典、励志和真诚;看后会让人受益匪浅也对自己很有用,是一本值得一看的好书;但是由于一部分读者对书类型的喜好、书本内容乏味等的原因致使小部分的读者不喜欢这部作品并且给了这本书差评。对《人性的弱点全集》的分析及结果到此,以上。