一闲下来就不务正业了,写个爬虫,听段子。
额,mac自带的语音朗读,windows我就不知道啦,有兴趣的可以去研究一下哈。
环境
python 2.7
mac os 10.12
使用
下载代码,是一个.py的文本文件,打开终端,在这个文件所属的目录下输入python xxxxxx.py
即可,根据提示进行选择
朗读的代码
1 | from subprocess import call |
当然了,听起来并不是很顺耳,不过我听了好一会儿之后就习惯了,有种暴走漫画的感觉 = =!
抓取数据
使用了urllib2,添加一个header就可以啦1
2
3
4
5
6
7
8
9
10
11
12
13
14# 抓取某一页全部的数据
try:
url = 'http://www.qiushibaike.com/hot/page/' + str(pageIndex)
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0)'
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url, headers = headers)
response = urllib2.urlopen(request)
return response.read().decode('utf-8')
except urllib2.URLError, e:
if hasattr(e,"reason"):
print '--------------------------'
print u"连接糗事百科失败,错误原因:\n",e.reason
print '--------------------------'
return None
解析数据
主要用到了正则表达式去匹配想要的内容,苦逼的是网页一改版,之前写的正则表达式可能就不能用了,然后导致爬取失败,此时应该使用curl+z停止爬虫程序,重新编写正则表达式。
同样作用的正则表达式并不一定唯一,只要能正确匹配出来就好,下面是2017.03.10的正则表达式,个人亲测应该没问题,如果有问题欢迎留言,我看到会改的。
1 | pattern = re.compile('<div.*?author clearfix">.*?<a href.*?<h2>(.*?)</h2>.*?<div.*?content">.*?<span>(.*?)</span>.*?</a>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S) |
匹配出了 0:作者,1:文字内容,2:图片,3:点赞数
程序开始时选择选项
选择是展示还是朗读,展示要每次按键,展示一条,朗读则是自动,一条一条无限朗读,好在朗读是个同步的方法,省去自己好多时间
1 | print '抓取糗事百科,Q退出' |
结束语
- 点击下载源代码
- 欢迎高手指点评论,求老司机带我飞!
- 本来是想爬点老司机论坛的,最近开两会,万一被抓了,搞个传播xx罪就太亏了