专栏首页万能的小草抓取《统计学习方法》前100条评论

抓取《统计学习方法》前100条评论

今天看完大壮老师《用Python玩转数据》的网络数据获取,决定来上手操作一下。就尝试抓取业界享誉好评《统计学习方法》的前100条评论,计算出平均得分。

1. 把python添加为环境变量

 PATH=PATH;C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32

(这里 C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32 为本机存放python.exe 的位置 )

运行上述命令之后 即可添加python到环境变量

2. 安装bs4和requests, lxml库,可以选择通过pip命令进行安装。

注意这里运行pip的时候需要进入pip所在目录,否则的pip无法进行安装。

cd C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\Scripts

在当前环境下依次输入

pip install bs4
pip install requests
pip install lxml

就会开始下载bs4 , requests, lxml库 o( ̄ヘ ̄o#)

3 做好上述准备工作之后,咱们就可以开始在Pycharm环境下编写code进行抓取数据啦。

在这里我要提醒两个地方

1. 一定要加上verify=False这个选项,这样Requests能忽略对SSL证书的验证。

r = requests.get('https://book.douban.com/subject/10590856/comments/hot?p=' + str(i+1),verify=False)

否则会出现SSLERROR: HTTPSConnectionPool(host='book.douban.com', port=443): Max retries exceeded with url: /subject/10590856/comments/hot?p=2 (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),))

2. Regular Expression

pattern = re.compile('<span class="user-stars allstar(.*?) rating"'),

这里可以匹配的结果大家可以通过 https://regex101.com/ 进行查询

4.code

#抓取抓取《统计学习方法》前100条评论

"""

@author zhujin

@version python3.6.1

@date 2017/11/25 Saturday

"""

import requests, re, time

from bs4 import BeautifulSoup
count = 0
i = 0
sum, count_s = 0, 0

while(count < 100):
   try:
       r = requests.get('https://book.douban.com/subject/10590856/comments/hot?p=' + str(i+1),verify=False)
   except Exception as err:
       print(err)
       break
   soup = BeautifulSoup(r.text, 'lxml')
   comments = soup.find_all('p', 'comment-content')
   for item in comments:
       count = count + 1
       print(count, item.string)
       if count == 100:
           break
   pattern = re.compile('<span class="user-stars allstar(.*?) rating"')
   p = re.findall(pattern, r.text)
   for star in p:
       count_s = count_s + 1
       sum += int(star)
   time.sleep(5)    # delay request from douban's robots.txt
   i += 1
if count == 100:
       print('the average score of this book is ' + str(sum / count_s))

5.运行上述code,得到的result

1 绝对不适合初学者。在理解了书所涉及的算法后,可以读本书。“事儿就这么个事儿,不解释”的范,典型的中式思维,精于总结而不精于解释。有点在于比其它谭浩强类计算机书认真点,每一章都会有论文的出处,可以自己去查。总之,适合回首往事,不适合一见钟情。 2 标准的国内教材,基本该涉及到的知识点都设计到了,就是不适合用来学习。只适合用作在学习完国外的教材或者课程之后当作手册来查询。 3 对见过这些算法又不太了解理论的童鞋比较好,对初学者来说解释的不够,对高手来说就是复习总结了一遍。 4 比较精简的一本书,感觉是对章节末的论文的重点的完整的整理。扫盲了,接下来看看中文版的“The Elements of Statistical Learning”。 5 唉 。。。。。。 95 第84页(6.21)下面L(P,w)对P(y|x)求偏导求错了,@李航博士 96 对加深对经典模型的理解有帮助 97 偏理论,但不费解,功底很好 98 svm推导详细。不过公式的符号表达方面的系统性不如Ng的讲义完整。 99 前MSRA大牛的作品,适合入门用。 100 写的清晰易懂

6.最后算出前100条评论的平均得分是

the average score of this book is 43.73626373626374

本文分享自微信公众号 - 小草学Python和SQL(zhujin_199),作者:zhujin

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 抓取天气信息并定时推送邮件

    最近正在看《Web Scraping with Python 》这本书,所以得动手实践一下,故作此文,通过抓取中国天气网的信息推送邮件信息,希望给忘记带伞的小伙...

    用户6021891
  • 《用python玩转数据》week1编程作业:循环编程题

    经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。

    用户6021891
  • Python在Finance上的应用5 :自动获取是S&P 500的成分股

    欢迎来到Python for Finance教程系列的第5讲。 在本教程和接下来的几篇文章中,我们将着手研究如何为更多公司提供大量的定价信息,以及我们如何一次处...

    用户6021891
  • PageAdmin 如何添加信息表

    网站有各种各样的需求,不同的网站需要保存的信息都不一致,如企业网站需要有产品表,新闻表,但学校网站需要新闻表,学生报名表等,自定义信息表很好解决这种需求,自定义...

    用户5258701
  • 脚本创建相关

    2、设置录制选项(HTML-based Script/URL-based Script)

    张树臣
  • [Leetcode][栈]相关题目汇总/分析/总结

    后端技术漫谈
  • Mockito 2 让我们校验一些行为

    这是因为绝大部分的人对列表这个接口比较熟悉(例如 add(), get(), clear() 方法)。

    HoneyMoose
  • Mockito 2 让我们校验一些行为

    这是因为绝大部分的人对列表这个接口比较熟悉(例如 add(), get(), clear() 方法)。

    HoneyMoose
  • 如何使特定的数据高亮显示?

    当表格里数据比较多时,很多时候我们为了便于观察数据,会特意把符合某些特征的数据行高亮显示出来。这不,公司的HR小姐姐就有这个需求,说她手头上有一份招聘数据,她想...

    猴子聊数据分析
  • Flink1.4 重启策略

    Flink支持不同的重启策略,重启策略控制在作业失败后如何重启。可以使用默认的重启策略启动集群,这个默认策略在作业没有特别指定重启策略时使用。如果在提交作业时指...

    smartsi

扫码关注云+社区

领取腾讯云代金券