个人专题Python建模与NLP晚期代码癌患者

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

2016-12-17  本文已影响523人  dalalaa

我在简书写文章还不到一万字,写的过程中,我发现,虽然我写的都是关于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

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读