美文网首页个人专题Python建模与NLP晚期代码癌患者
看看简书的作者在写些啥----抓取简书博文

看看简书的作者在写些啥----抓取简书博文

作者: dalalaa | 来源:发表于2016-12-17 12:55 被阅读523次

    我在简书写文章还不到一万字,写的过程中,我发现,虽然我写的都是关于Python的内容,但是不同方向的文章受关注度差异很大:

    我自己的博文,正好能截个图

    就萌生出想看看,简书的读者到底喜欢看些啥的想法。

    下面来介绍一下我用python抓取程序员专题的最近10000篇文章标题,及其阅读量、评论数、喜欢数的整个过程。


    抓取过程选用的比较易于操作,但是效率比较低的方式。

    工具:

    Python第三方库:BeautifulSoup,selenium,chromedriver.exe(2.26)
    BeautifulSoup:用来解析网页源代码,提取其中的数据;
    selenium:因为简书使用的是滚动翻页,为了抓取多页数据,最简单的方法就是用selenium模拟人的操作,进行滚动翻页,然后再抓取;
    chromedriver.exe: 这里我使用的是chrome,如果你用别的浏览器就要下载不同的驱动小程序(我印象中Firefox好像可以直接用),特别强调,最好选择最新的2.26版本,我试了两个别的版本的都报错了。

    准备工作:

    最近我发现用pip安装第三方库的时候,总是会出现网络错误,所以推荐大家使用国内源。

    清华源:https://pypi.tuna.tsinghua.edu.cn/simple(好用)
    豆瓣源:http://pypi.douban.com/simple/
    阿里源:http://mirrors.aliyun.com/pypi/simple/

    在命令行输入:pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple 就可以安装BeautifulSoup了
    然后用 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple 安装selenium

    最后下载chromedriver.exe, 把它放在Python的安装文件夹里面,就算准备完成了。

    思路:

    1. 使用selenium进行翻页操作;
      <code>
      driver = webdriver.Chrome('C:\Python34\Scripts\chromedriver.exe')#这里参数可选,如果不填的话会自动搜索,尽量放在Python文件夹里面。
      driver.get("http://www.jianshu.com/collection/NEt52a")
      #翻页功能
      for i in range(1000):
      driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
      time.sleep(1)#给浏览器一秒的加载时间,因此这个程序运行速度并不快,主要的时间就花在这上面了
      #获取当前源代码
      html = driver.page_source
      </code>

    2. 使用BeautifulSoup处理网页;
      抓取标题:
      用BeautifulSoup里的CSS选择器来抓取,很快。
      <code>
      titles = []
      soup1 = BeautifulSoup(html,"html.parser")
      for i in range(len(soup1.select('h4[class="title"]'))):
      titles.append(soup1.select('h4[class="title"]')[i].get_text())
      </code>
      阅读量:
      比抓取标题多一个提取数字的步骤
      <code>
      a = re.compile(r'\d+')
      ReadTimes[i] = int(a.findall(ReadTimes[i])[0])#提取数字
      </code>
      其他的评论数,喜欢数也是一样的,至于打赏……实在是比较罕见,就没有收集了。

    3. 将数据存入文件中。
      <code>f = open("Title.txt","w+",encoding='utf-8')#注意这里编码需要改一下,要不然碰到标题里面带有奇怪字符的就会报错。
      for i in range(len(titles)):
      f.write(titles[i]+ '\n')
      f.close()</code>

    简单结果展示:

    我们来看一看程序员专题下大家都在讨论什么。
    这里我用万能的正则表达式简单地匹配了一下关键词,一些我没有听说过的东西就归入了小众工具了。

    话题分布图

    本文结果主要靠Python,Excel,MySQL处理得到。

    平均水平

    程序员专题下的作者们一般能得到多少阅读量呢??

    阅读 评论 喜欢
    223.84 2.23 8.88

    是不是拖了后腿了,反正我的文章是没有达到这个平均量。我个人的数量是:

    阅读量 评论量 喜欢量
    148 1.91 6.09

    这个数据和和平均值差距还是很大的。
    看来我的文章表现还是比较差的,那究竟差到一个什么地步呢?我们继续往下分析:

    三个指标分布

    用Excel做的阅读量统计 Excel做的评论数统计 Excel做的喜欢数统计

    很明显地能看到是个别大神把平均数网上拉了。那么我们来从另一个角度看看。

    排位

    就像排位赛一样,我们看看各个段位分别是什么水平

    百分比 阅读量 评论量 喜欢量
    Top1 13367 219 722
    1% 3229 32 117
    5% 881 9 36
    10% 411 6 18
    20% 207 2 8
    30% 129 1 5
    40% 86 0 3
    50% 60 0 2
    70% 23 0 1
    90% 12 0 0
    100% 1 0 0

    看完这个我大感欣慰,按六十分及格的标准我已经可以打七十多分了嘛。

    什么样的文章比较受欢迎呢?

    阅读量前五名:

    标题 阅读量 评论量 喜欢量
    为知笔记、印象笔记、有道云笔记评测与个人使用心得 13367 14 114
    Android最全开发资源 9175 59 517
    推荐!设计师与程序员不能错过的 10 个酷站 4999 41 722
    原创\我的老公是程序猿 4392 219 115
    Http POST 提交数据的四种方式解析 4083 3 38

    这五篇文章只有第五篇算得上是纯正的技术贴,其他的都是经验贴、生活贴和资源帖。

    看来太严肃的话题确实不够吸引人。

    先这么多吧,后续我们再看看比较受关注的文章主要有哪些类别。

    相关文章

      网友评论

      • 向右奔跑:文章分类的标准,是根据标题的关键字提取的吗?
        dalalaa: @向右奔跑 嗯,主要看关键词,不带关键词的我自己加了关键词

      本文标题:看看简书的作者在写些啥----抓取简书博文

      本文链接:https://www.haomeiwen.com/subject/gcabmttx.html