利用python爬取糗事百科的用户及段子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python爬取糗事百科的用户及段子相关的知识,希望对你有一定的参考价值。

最近正在学习python爬虫,爬虫可以做很多有趣的事,本文利用python爬虫来爬取糗事百科的用户以及段子,我们需要利用python获取糗事百科一个页面的用户以及段子,就需要匹配两次,然后将获取的内容格式化输出就可以了。
这是我写的脚本:

#coding:utf-8
import urllib2
import urllib
import re
import sys
reload(sys)
sys.setdefaultencoding(‘utf8‘)
hearders = "User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
##糗事百科的页面链接
url = "https://www.qiushibaike.com/text/"
##创建opener对象
opener = urllib2.build_opener()
opener.addheaders = [hearders]
urllib2.install_opener(opener)
##存储页面的源代码
data = urllib2.urlopen(url).read().decode("utf-8")

##下面是正则匹配表达式,par1匹配的是用户,par2匹配的是段子。
par1 = ‘(<h2>\s*?)(.*?)(\s*?</h2>)‘
par2 = ‘(<span>\s*?(?!<h2>))(.*?)(\s*?</span>)‘

##在data中匹配相应的内容,file1存储的是用户,file2存储的是段子。
file1 = re.compile(par1).findall(data)
file2 = re.compile(par2).findall(data)

##利用for循环输出相应的内容。
for i in range(len(file1)):
    print "用户%s:" %(i)+file1[i][1]
    print "段子:%s" %(file2[i][1])
    print ""

看一下直接执行脚本的效果吧。

[[email protected] python]# python qiushi.py 
用户0:长弓射飞机
段子:打麻将三缺一,call发小筒子过来了(胖的像麻将里的一筒)。<br/>筒子: 我刚做完头发准备回家,这样不好吧!<br/>小八: 我们一起帮你作证怕毛线。<br/>。。。。<br/>筒子手气不错,大杀四方。。。。<br/>筒子: 不好意思!不好意思!手气有点好!各位我也不想,手一边拿钱往自己口袋塞,一边贱笑。<br/>来电话了!来电话了!筒子: 喂!老婆我刚做完头发,在和小八他们吃宵夜!你要不要来吃?哦!不来了啊!那拜拜!<br/>叮叮叮。。。小八: 喂嫂子,我在做头发啊!没看到筒子啊!<br/><br/>来电话了!来电话了!筒子: 喂!喂!喂!!!!!!!!

用户1:红红的辣辣椒
段子:跟朋友去吃火锅,人挺多的,过了一会儿,服务员过来问有没有漏什么菜,,我说还有一盘菜没上,服务员说那个,,<br/>“羊尾巴”<br/>噗…哈哈…一屋子狂笑,,<br/>服务员懵逼的说“没这个呀,,”<br/>我旁边的哥们儿说“羊 鞭。。”

用户2:倔强的傻晴°
段子:下午大扫除,我说我腰好酸痛。经理说他腰也疼。我说我是生孩子剖腹产打麻药的后遗症。你难道也生过孩子?<br/>他说以前手术打了两次麻药,一针是阑尾炎手术。第二针是因为第一针割阑尾的时候割错了,所以又重新割了一遍。<br/>我脑抽问了一句:“第一次是把丁丁割了吗?”
......

由于内容太多就只输出一部分。

还可以将输出的内容保存到一个txt文件中

[[email protected] python]# python qiushi.py > qiushi.txt
[[email protected] python]# cat qiushi.txt 
用户0:长弓射飞机
段子:打麻将三缺一,call发小筒子过来了(胖的像麻将里的一筒)。<br/>筒子: 我刚做完头发准备回家,这样不好吧!<br/>小八: 我们一起帮你作证怕毛线。<br/>。。。。<br/>筒子手气不错,大杀四方。。。。<br/>筒子: 不好意思!不好意思!手气有点好!各位我也不想,手一边拿钱往自己口袋塞,一边贱笑。<br/>来电话了!来电话了!筒子: 喂!老婆我刚做完头发,在和小八他们吃宵夜!你要不要来吃?哦!不来了啊!那拜拜!<br/>叮叮叮。。。小八: 喂嫂子,我在做头发啊!没看到筒子啊!<br/><br/>来电话了!来电话了!筒子: 喂!喂!喂!!!!!!!!

用户1:红红的辣辣椒
段子:跟朋友去吃火锅,人挺多的,过了一会儿,服务员过来问有没有漏什么菜,,我说还有一盘菜没上,服务员说那个,,<br/>“羊尾巴”<br/>噗…哈哈…一屋子狂笑,,<br/>服务员懵逼的说“没这个呀,,”<br/>我旁边的哥们儿说“羊 鞭。。”

用户2:倔强的傻晴°
段子:下午大扫除,我说我腰好酸痛。经理说他腰也疼。我说我是生孩子剖腹产打麻药的后遗症。你难道也生过孩子?<br/>他说以前手术打了两次麻药,一针是阑尾炎手术。第二针是因为第一针割阑尾的时候割错了,所以又重新割了一遍。<br/>我脑抽问了一句:“第一次是把丁丁割了吗?”
......

需要注意的是爬虫脚本的正则表达式不是永远都能匹配到的,毕竟别人网页的源代码是会改变的,所以需要应对实际的网页源代码来写相应的正则表达式。

以上是关于利用python爬取糗事百科的用户及段子的主要内容,如果未能解决你的问题,请参考以下文章

Python 爬取糗事百科段子

芝麻HTTP:Python爬虫实战之爬取糗事百科段子

Python爬虫爬取糗事百科段子内容

Python爬虫实战一之爬取糗事百科段子

Python爬虫-爬取糗事百科段子

python爬取糗事百科段子