和vvv 发表于 2017-6-23 17:29:10

23 糗事百科段子爬取

本帖最后由 和vvv 于 2017-6-23 17:32 编辑

23 糗事百科段子爬取


经过前面urllib库和正则表达式的学习,我们已经可以利用爬虫来做许多事情了。在本文中,我们将爬取糗事百科的段子。


一、网站分析


(1)打开网站(https://www.qiushibaike.com/),可以看到有很多的段子。我们的目的就是爬取首页热门栏目下的段子。划到最后,你会看到页数。对,我们也要实现翻页的功能。


(2)右键“查看源文件”。“Ctrl+F搜索段子:




可以发现一定的规律。在搜索“<div class="content">”,上下浏览,基本上都是段子。因此,我们就找到了写正则表达式的方法。因为网页源码中出现了换行,于是要使用模式修正符(re.S)。data = opener.open(url).read().decode('utf-8','ignore')
    pat = '<div class="content">\s*?<span>(.*?)</span>.*?</div>'
    rst = re.compile(pat,re.S).findall(data)代码中的“ignore”的功能是:即使解码utf-8出现错误,也继续操作。


(3)于是,我们就可以编写完整的代码:#糗事百科
import urllib.request
import re
#浏览器伪装
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
opener = urllib.request.build_opener()
opener.addheaders =
urllib.request.install_opener(opener)
data = opener.open(url).read().decode('utf-8','ignore')
pat = '<div class="content">\s*?<span>(.*?)</span>.*?</div>'
rst = re.compile(pat,re.S).findall(data)
print(rst[:5])结果:['下班回家,正常行驶中就见一孕妇拉着一女宝直接无视路上往来车辆横冲直撞,都不带左右观察一下路况的!我说这位大姐,您这肚里装一个,手里拉一个的能负点责任么,好歹也是祖国的2朵小花骨朵,总不能还没盛开哪天就给您稀里糊涂的给造没了吧?那可都是祖国的未来啊!', '下午的时候嘴馋,想吃点重口味的(比如凤爪、烤鱿鱼之类),让我爸逛超市的时候给我随便带点。结果他在超市转了半天,最后给我买了一瓶辣椒酱。。。', '半夜起来尿瓶子里面了,刚才扔了垃圾就在厕所拉屎。听到收垃圾的大妈在骂人,我是不是该出去怼她?', '第一次发糗事,留着有用,不割<br/>今天lz拿着手机走在路上,神奇地一脚踩到一块西瓜皮,我的个亲娘诶,差点摔死lz,一屁股坐到了地上,幸亏手机屏幕碎了,挣扎着起来,神奇的手又摁到了西瓜皮,又摔了一次,也是没谁了,换屏幕花了200多,回家擦点药酒,匿了', '初中踢球,球好不容易到我脚边我一踢人倒了,鞋飞了有三米多高,球一丝也没动之后我被笑了一个月。']当然也可以把全部内容输出来,但也只有几十条。因此,实现翻页是必须的。


(4)实现翻页爬取
目前来说,实现翻页就是观察url中的某个字段的变化,找出其与页数之间的关系。


糗事百科第1页:https://www.qiushibaike.com/第2页:https://www.qiushibaike.com/8hr/page/2/?s=4994028可以精简:https://www.qiushibaike.com/8hr/page/2/第3页:https://www.qiushibaike.com/8hr/page/3/?s=4994032精简后:https://www.qiushibaike.com/8hr/page/3/

于是,我们就很容易地找到了翻页的关键:https://www.qiushibaike.com/8hr/page/页数/因此,爬取的url可以这样构造:
for k in range(0,页数):
    url = "http://www.qiushibaike.com/8hr/page/"+str(k+1)


二、代码完整实现
**** Hidden Message *****
由于结果太多,只有前面一部分:中午老师打电话来说儿子鞋坏了,不能穿了,我赶紧买了一双新的送去幼儿园<br/>进教室的时候我茫然了,一堆穿着一样校服的小萝卜头谁是我儿子???<br/>我看着这些孩子:这个不是,那个也不是,………<br/>彻底蒙圈的我忍不住大声:儿子,出来!<br/>身旁一双小手轻轻的扯我衣角:妈妈,你不认识我了?我在这里好久了!
----------------
记得好多年前刚开始玩QQ,不知道很多英文缩写什么意思,记得一个女性网友的男朋友(后来才知道)给我发来SB,当时不明白什么意思,思虑良久开始回复,这个回复至今都让自己佩服:这是你的英文名缩写吗?
----------------
今天和儿子玩卖菜游戏,拿了一个篮子,坐在小板凳上。叫着:“卖菜喽,卖菜喽。”我问:“茄子多少钱?”“茄子两块钱。”黄瓜呢?黄瓜两块钱,豆子呢?豆子一块钱。辣椒一块钱。给我拿两个黄瓜,一个茄子,二个豆子,二个辣椒总共要多少钱?儿子沉默了一下,掰着手指。说,爸爸,你走开,我不想卖给你。
----------------
老姐脾气不好,经常欺负姐夫。有时姐夫跟老爸吐槽,老爸总是语重心长地拍着姐夫肩膀:女婿啊,虽然她是我女儿,但是毕竟你老婆,你们夫妻的事,我不好管的!<br/>姐夫吐槽失败,继续受老姐气~<br/>我偷偷问老爸:你真不管他们的事?<br/>老爸微笑:你姐没吃亏,我就不管了……
----------------
大学的时候。<br/><br/>宿舍在二楼,很大,有二十多张高低铺,还带有卫生间。<br/><br/>暑假我打算做家教,所以没回老家。空荡荡的宿舍闷热难当。<br/><br/>夜里没法入睡,只有一遍又一遍的去冲凉,在享受沐浴带来的畅快时,心里忽然有了个奇异的想法。<br/><br/>假期没有宿管,我用水泥砖头砌了个二十公分高的门槛,堵住了地漏,把淋浴的喷头牵到洗手间外面,让水哗哗的流到地上,如一汪汩汩而流的清泉 ,八爪鱼伸触角一般迅速流向每个角落。<br/><br/>水越聚越多,渐渐没过地面,齐着门槛了,风扇一吹,水波粼粼,室内凉气拂面,热气顿减。<br/><br/>关了水龙头,我既害怕又...
----------------
老妹那天和她闺蜜比年龄,闺蜜比她小一个多月,老妹反驳:“你其实比我大,因为我是早产儿,我早产了3个月……”
----------------
和男友刚谈恋爱时,软磨硬泡叫他说说以前的恋爱经历,每次他都搪塞敷衍,终于有一次耐不住我磨,开始给我讲……<br/>他说::“我的前任……”说着,竟然伸出舌头舔了舔嘴唇<br/>我上去就是一巴掌!
----------------
楼主左腿受伤后,医生叮嘱楼主每天要抬抬腿、勾勾脚,拉筋、锻炼肌肉……<br/>每次楼主疼的不想锻炼了,老妈就端来零食、水果各种‘鼓励’……<br/>还别说,零食的作用还真大。还没半个月,只要老妈一给楼主拿零食……我家大金毛就往地上一躺,不停的蹬着左腿、哀嚎着向老妈要零食……
----------------
去人工冲浪游乐场玩了回来剧烈胃痛被送急诊,诊断出误食脏东西引发急性胃炎。住院一周陆续迎来围观小伙伴~每每有人问到我病因时,我都只能默默的说:“说来你可能不信,我大概是去冲浪水喝多了……”
----------------
老姐第一年去外地上学,钱总不够花。老妈打了几次钱后,问她买什么花销最大,老姐说买卫生纸。<br/>把我老妈惊的,当天就请假跑去我姐的学校。到了学校才知道,我姐大大咧咧的性格,买的卫生纸就挂在卫生间,全宿舍女孩用……
----------------
有个特别扣的男友,我生日,什么礼物都没有,叫我出去,夜宵都不舍得请我吃,送我回去说太远,然后我说我自己打车回去,他说好,车费也没有帮我付,我在想,要不要分手,过了绝对分。我都不好意思实名了,还是匿了吧!唉!
----------------
听朋友讲的,大妈们排练广场舞,占用了篮球场。一占就是十几天,打球的人愤怒了,不肯让出场地。大妈发动群攻,多人扛不住撤退了,只有一个壮汉硬气的说:有老子在这里,谁来都没用!!<br/>一米九的壮汉,气势汹汹,骂他不走,推他不动。大妈们搞不定他,最后叫来一个以前的舞友,是个老太太。眨眼间壮汉就被他娘连人带球给拎回家了。。
----------------
参加一哥们婚礼,去的有些晚,都开席了,被安排个几个大叔一桌,几个大叔一边喝酒一边聊天,我是真饿了,闷头开吃,吃的正嗨,就听一个大叔对我说“小伙子,你能不能慢点吃!给我们留点下酒菜行不?”我。。。。。。
----------------
单位一男同事说红包里没钱了,让我帮他叫一份20元的外卖他给我现金,我立刻就答应了,然后他掏出了19块钱的零钱递给我说:“上上个月有一次我和你一起做公交车,当时我帮你投了一块钱的币。”<br/>我:……额……
----------------
早上刚睡醒,就听见侄儿大叫大喊 : 奶奶,快来看!姑姑学坏了,姑姑学抽烟了!<br/>我就觉得纳闷了,我啥时候抽烟了?赶紧从房里跑出来!<br/>卧槽,原在我包包里的一盒杜蕾斯,现在正被侄儿高高举在手里,一脸得意的正向我妈邀功。。。
----------------
张大哥在街上卖菜。吆喝着:自己家种的,无公害的绿色蔬菜。围着买的人还不少。<br/>我跟他打招呼:哥,小力(他儿子)是不是又在家打农药(王者荣耀)呢。<br/>张大哥乐呵呵的回答:是啊,今天放假没事,打了一天了。<br/>人们一听,放下手里的菜,“呼啦”都散了。
----------------
今天看到住六楼的柴郡主戴着墨镜一脸忧郁的坐在楼下,我好奇心起,就去问了:柴郡主咋了这是?<br/>我瞎了!<br/>啥时候的事啊?前几天还好好的<br/>我暗恋对面五楼一男孩三年,天天拿望远镜偷看他洗澡,直到昨天我买了一高倍高清望远镜,我才发现原来他是个女孩……
----------------
初中第一次来好事儿,弄得我特别尴尬,手忙脚乱的……偷偷的跑进厕所,感觉自己手也在抖,脸都红了……,贴反了,粘住了,卧 槽~,疼 死 老 娘 了~
----------------
刚出去溜娃,一小孩(两岁左右)哭着到处找妈妈!问他话也不会说!我家两宝陪着他,牵着他的手,带着找到他那跳广场舞跳的嗨妈妈!这样带孩子真是放心!孩子被拐卖了都不知道!<br/>我家两宝宝真赞!有爱!
----------------
和老婆逛街,她给我买的裤子全是短裤。给她自己买的全是长裤。<br/>我很感动,觉得老婆很懂我,她知道我怕热。<br/>要不是在买单时,听到老婆嘀咕:“老公全是短裤,这下蚊子应该不会咬我了吧……”我会感动一辈子的!

总的来说,本文利用的就是urllib库和正则表达式的基础知识,并不算太难,但却很实用。


新手·ing 发表于 2017-6-24 13:00:20

看看

一搏赢天 发表于 2017-7-24 21:36:18

好帖子顶起啦!!!!

木木的青 发表于 2017-9-16 13:51:28

支持楼主

wsc1996 发表于 2017-9-16 15:17:53

111

wsc1996 发表于 2017-9-16 15:46:16

11

sk332101686 发表于 2017-9-18 16:00:04

不错

熊爱荔枝 发表于 2017-9-19 18:18:10

{:10_277:}

Brance 发表于 2017-9-19 18:32:59

看看~

ButcherRabbit 发表于 2017-9-26 22:59:49


看看

tuxiaoqing 发表于 2017-9-27 10:56:11

感谢老铁分享

zf1013751835 发表于 2017-9-28 16:47:18

努力学习

dengwen168 发表于 2017-9-28 21:43:45

看看~

天使骑魔鬼 发表于 2017-10-11 19:05:22

{:5_101:}

张大象 发表于 2017-10-12 15:04:41

看看

流月飞星 发表于 2017-11-9 21:53:08

好东西

ledehui 发表于 2017-11-10 11:11:58

学习!!

sideboyd 发表于 2017-11-17 13:05:40

111111111111111111111

来钓鱼 发表于 2017-11-23 22:12:42

学习学习

leave591 发表于 2017-12-29 13:18:36

老规矩,先回后下!!!!!!!
页: [1] 2
查看完整版本: 23 糗事百科段子爬取