我在简书写文章还不到一万字,写的过程中,我发现,虽然我写的都是关于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的安装文件夹里面,就算准备完成了。
思路:
-
使用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> -
使用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>
其他的评论数,喜欢数也是一样的,至于打赏……实在是比较罕见,就没有收集了。 -
将数据存入文件中。
<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 |
这五篇文章只有第五篇算得上是纯正的技术贴,其他的都是经验贴、生活贴和资源帖。
看来太严肃的话题确实不够吸引人。
先这么多吧,后续我们再看看比较受关注的文章主要有哪些类别。
网友评论