有人说简书首页上的鸡汤文很多,虽然我看到不少干货和很好的作者,为了用数据来说明,就想到用Python把数据抓取下来做一个分析,看看首页的热门上有多少鸡汤文,有多少关于IT编程的文章,简书上评论和写作的群体有什么特点。
完成:把简书首页热门文章标题,链接,阅读量、评论、打赏爬取下来,保存到一个Excel文件中。每天定时抓取数据,Excel进行分类汇总分析,再对一些文章翻阅。
再对热门文章中的评论者信息抓取分析,对文章点“喜欢”的用户抓取分析(从邮件中抓取用户,反向获得信息)
之前Python看过半天时间,这次学习,不系统,直接拿现成的代码理解,一边测试一边coding 完成一个小功能。从网上的一小段代码(抓取图片Demo)开始学习,一步步增加功能:
- 获取网页代码(urllib2)
- 解析网页(正则表达式,BeautifulSoup)
- 从最简单开始,测试拿到网页中所有的图片,保存到本地(抓取网站图片)
- 把页面中所有文章的标题拿到,打印出来
- 拿到一组数据(标题,链接,阅读量、评论、打赏),按格式打印
- 把抓取的数据写入Excel(xlwt)
- 安装第三方库 xlwt
- 测试写入数据到excel(中文的写入)
- 封装方法,把抓取的数据写入excel
- 开启定时任务
以上功能完成后,再回过头把我忽略的基础知识快速过一遍。
遇到的问题:
正则表达式,urllib2直接读取到网页后,需要用正则表达式匹配取出文章标题等信息。主要在匹配文章标题、阅读数量,换行、空格的匹配上试了多次,在取出关联数据上花了一些时间。
开始采取的方法正则表达式直接匹配网页的方式,对网页代码进行分析,找出标题,链接,阅读量、评论的代码的特征。后来采用BeautifulSoup
Excel库引入的问题。在命令行安装xlwt,控制台上可以使用,但是在PyCharm不能使用xlwt,显示没有导入库。Mac中PyCharm添加第三库的地方一直没有找到,最后只好用搜索的方式,搜Project Interpreter找到。 (但是在安装BeautifulSoup后,PyCharm中就直接可以用了)
BeautifulSoup在命令行pip安装失败,直接下载源码进行安装。
Excel追加数据和写入数据不同,xlwt操作每次会重写excel文件,追加写入数据用xlutils,在PyCharm中xlutils也没有什么代码提示和补全。
rb = open_workbook(filename) #应该是以只读的方式拿到文件
wb = copy(rb) #拷贝成一个可写的工作簿?
sheet = wb.get_sheet(0)
sheet.write(0, 0, value.decode('utf-8')) #写入中文
wb.save(filename)
从这段代码开始
import re
import urllib
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = imgre.findall(html)
x = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x = x + 1
html = getHtml("http://tieba.baidu.com/p/2460150866")
getImg(html)
就是对以上代码的拆解,按上述步骤添加我设想的功能,再进行封装。
体会:
- Python上手比较快,学习成本低,大部分内容我参照Java来理解,函数式编程方便快捷,可以说是write less, do more
- 一些库的用法我还没有很好理解,但能经过调试快速做出东西来,还需要深入了解。如xlwt, 特别是xlutils可能没有找到类的特性,不像urllib2在IDE中有提示就可以直接知道怎么用。
- 下一步多看一些github上的代码,搞一些小工具和好玩的东西。