爬取糗事百科,朗读段子

    xiaoxiao2021-03-25  111

    一闲下来就不务正业了,写个爬虫,听段子。 额,mac自带的语音朗读,windows我就不知道啦,有兴趣的可以去研究一下哈。

    环境 python 2.7 mac os 10.12

    使用 下载代码,是一个.py的文本文件,打开终端,在这个文件所属的目录下输入python xxxxxx.py即可,根据提示进行选择

    朗读的代码

    from subprocess import call call(['say', 'hello pengge'])

    当然了,听起来并不是很顺耳,不过我听了好一会儿之后就习惯了,有种暴走漫画的感觉 = =!

    抓取数据

    使用了urllib2,添加一个header就可以啦

    # 抓取某一页全部的数据 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的正则表达式,个人亲测应该没问题,如果有问题欢迎留言,我看到会改的。

    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:点赞数

    程序开始时选择选项 选择是展示还是朗读,展示要每次按键,展示一条,朗读则是自动,一条一条无限朗读,好在朗读是个同步的方法,省去自己好多时间

    print '抓取糗事百科,Q退出' print '需要自动朗读吗?Y/N' while True: input = raw_input() if input == "Y" or input == "y": self.voice = True print '已经选择自动朗读,curl + z 退出' break; elif input == "N" or input == "n": self.voice = False break; else: print '只能输入 Y/N' self.stop = False self.getNewPage() self.showStory()

    结束语 1. 点击下载源代码 2. 欢迎高手指点评论,求老司机带我飞! 3. 本来是想爬点老司机论坛的,最近开两会,万一被抓了,搞个传播xx罪就太亏了

    转载请注明原文地址: https://ju.6miu.com/read-25430.html

    最新回复(0)