符号 userid = re.sub(r'\n|||
', '', userid) name = re.sub(r'\n|||
', '', name) content = re.sub(r'\n|||
', '', content) print((userid, name, content))
运行结果
('/users/34093917/', '杨槐树的花香', '逛商场,一美女把一条大狗拉到商场里了。样子很吓人。估计碰到一个男的,吓得他大叫一声:我的个妈呀,拉好你老公行不?美女不愿意说男的骂她。两人纠缠看热闹的越来越多,大家看美女把狗拉到商城都反感一边倒支持男的。人群中有人说话,着男的怎么这样,说狗是人家老公,真没素质。美女听到有人替她说话又硬气三分。另一个人回答就是,哪狗明明是人家儿子……\x01[生气了]\x01[生气了]\x01[生气了]')
('/users/24703920/', '甜甜橙※', '去浴池洗澡,发现一个大姐老是偷偷看我,也没在意!等我准备穿衣服的时候,偷瞄一眼大姐已经穿好了!突然大姐“嗖”的飘到我跟前,用手揉了一把我 咪 咪,嘴里碎碎念:“这么大这么好看居然是真的?!真的?!”我擦。。。')
('/users/226122/', '想爱爱就别给老婆', '阴天,LZ白天在家一直睡觉,3岁儿子在客厅玩耍一会跑过来问我:妈妈,你睡觉,睡醒了吗?一会又跑回来问:妈妈,你可以起床了吗?好吧,知道你无聊没事做了')
('/users/21674803/', '小晓超人', '我这个人最怕别人跟我比!若果你满世界的乱拉屎,我就可以把屎糊满你的全世界!')
('/users/31240860/', '残落之辉', '不知道有几个人有类似的经历。当你走在大街上,突然听见一苍老又陌生的声音在叫你的小名,你以为是许久未见的长辈而满怀激动的心情转过身时……却看见一只小土狗撒着欢的冲向一位老人……别拦我,让我咬死那只狗!!!')
('/users/34710929/', '星舞飞碟', '上公交车遇到一奶奶带一小孩,小孩又哭又闹,吵的全车人不得安宁,后来一高中生问他奶奶:你家小孩多少钱?瞬间不哭了')
('/users/32215536/', '吃了两碗又盛', '那天一朋友被他儿子的班主任请去谈话,回来时一脸俄罗斯方块。问他怎么了,他说:马 勒戈壁的,这小兔 崽 子不知道跟哪个王 八犊 子学会了说脏话!')
('/users/30381978/', 'LOVE蓝可', '单身狗一枚 去参加朋友婚礼 结果把车炸成这样了,注定孤独一生吧')
('/users/30476775/', '我的个脑子呀', '分享#今天早上去帮弟弟买作业本的时候遇到弟弟的好朋友在骑自行车,速度很快结果没刹住车一头撞在了树上,我本来想关心他一下,可是想到了前几天发生的事,我竟大笑了起来。。。。。。弟弟的这个好朋友,刚刚买了一辆自行车勤学苦练终于学会了,可不久之后听弟弟说他掉进了粪坑,然后不久又钻进了水沟,有一次来我家找我弟弟玩就把车停在了大门外,我爸说让他推进家里来,可是他就是不听说没事,和弟弟玩了一会他们正准备出去玩,可是发现他的自行车不见啦,最后他们找啊找啊急得不得了就是找不到,吓得不敢回家,就去了他奶奶家,(他奶…查看全文')
('/users/21447817/', '嘟嘟豆豆5', '洗洗睡觉了!!')
('/users/30998801/', '红尘一笑醉红颜~', '深 夜 缠 绵,情到深处忍不住呻 吟 浅 唱,老公说你小声点,我说不要,那样憋着多难受啊……然后他直接吻住我的嘴,把我憋的“呜呜”叫,奶奶的,一脚给他踹下去了,他委屈的爬起来告诉我,他听到隔壁有说话的声音,怕人家听到.....我说“你不在家我每天听他们家叫,现在也该让他们尝尝我的厉害了!”.....')
('/users/21821649/', '卟溫柔', '闺蜜老公感冒了,让我开车捎他们两口子去医院打针。看完医生去打针,只见那个小护士很利索的把针头扎了进去,闺蜜问她老公有感觉没?她老公看了看那么细的针头,说这么细,扎进去能有啥感觉?闺蜜看了她老公一眼说:“老公,你终于体会到我的感受了......”\x01[惊讶]\x01[惊讶]\x01[惊讶]我是不是发现了什么\x01[doge]\x01[doge]\x01[doge]')
('/users/12679679/', 'o初恋o', '一个客户在我早上熟睡之际因为订单问题给我电话,我爱发嗲,加上没睡醒更是软绵绵的声音,然后连着5天他每天早上都给我打电话喊我起床,关键我凌晨三四点才睡觉的,可烦死人啦')
('/users/31973521/', '锤子是主谋', '背景:“国庆回家过了半个月荒诞的生活。一直没有运动,回到上海锻炼一小时以后喝了口冰水开始胃疼。”我:“医生我锻炼了以后胃疼什么情况?以前没发生过这种事。”医生:“你不用紧张,这种情况不用吃药,过一会自己就好了。”我:“谢谢,那耽误我晚上喝酒不?”医生:“那我还是给你开点药吧。”我:......')
('/users/16696217/', '黄半仙Demigo…', '男:,,,,,,女:。。。。。。男:好女:来接我')
('/users/13521795/', '哥裤裆有杀气', '万恶的马赛克(转)')
('/users/30683297/', '傻妞也', '老师:“凡事要争第一,第二和倒数第一没什么区别。”小宝:“为什么?”老师:“我举个例子,你说世界上最高的山峰是什么峰?”小宝:“不知道啊,啥峰啊?”')
('/users/31087078/', '大冰冰儿儿', '别再自欺欺人了,鹿晗关晓彤俩人就是在一起了,我和彭于晏也要宣布了请大家不要伤心我们会幸福的[微笑] @所有人')
('/users/9005124/', '男人不将就', '同事儿子六岁,上幼儿园。经常被一同学欺负,老师训斥也不管用。同事气不过,又不能和小孩一般见识,晚上怒气冲冲对他儿子说“你明天上学不把他(欺负他的同学)揍一顿,回来你就要挨打,若是打赢了晚上回来还有奖励。”第二天他儿子一入园就找那小子报仇去了,还把他打的流鼻血。老师问为什么打架,他儿子理直气壮的说“不打他晚上回去我爸要打我的。”搞的老师有点哭笑不得。同事被请去学校,在办公室老师当着好几个老师的面讲给他听,同事说当时真觉得丢人,过后又觉得很赞。当晚同事就带他儿子肯德基去了,还奖励了20。之后再也没…查看全文')
('/users/28264578/', '屌丝小叔', '我想说在群里抢红包说少的发,抢了个最少的0.53元,到我发时想发个5.3元手一抖53元没了糗吧!这还不是经典,经典的刚洗澡时把洗面膏当洗发膏用了,半天不起沫才发现用错了!唉')
('/users/19216493/', 'CTR小诺', '小仙女请发言 过麦')
('/users/9942197/', '植哥哥', '太单纯,怪我不懂……')
('/users/27749688/', '无言,无缘', '两手抓咪咪')
('/users/33390668/', '吃土吃够了', '我爸要给我买火箭了,再过两天就是我27岁的生日了,我跟我爸说想出去玩,让他给我买张机票当礼物,我爸说∶“我给你买个火箭你直接上天,免得老嫁不出去呆在地球上丢人!”我∶\x01[捂脸]\x01[捂脸]……')
('/users/26260464/', '紫燕双飞飞飞的', '好像很拉风。')
代码解读
- import: 关键字,是导入python库文件的,当然也可以导入你自己写得文件,它的意思是要引用哪个模块,这里我们需要引用两个模块,一个是urllib模块,一个是re(正则表达式模块),引用了这两个模块后我们就能使用这两个模块提供的方法
- url: 变量,这里的变量赋值为糗事百科的网址
user_agent: 用户代理,这个参数很关键,爬虫所有的动作都需要模拟人怎么去操作,这样服务器才不会拦截你的访问,user_agent表示我们使用的是什么浏览器去访问的,这里需要说明一下反爬策略,常见的反爬策略是服务器端会监测你的user_agent,ip, 访问频率,如果你同一个ip地址短时间内访问过多,服务器端会认为你不是人为操作,它会认为你是个机器人,因为人为操作没有这么频繁。所以爬和反爬是一对天敌,后面我会讲爬虫的高级应用,所谓“道高一尺,魔高一丈”是也。user_agent参数可以通过开发者工具Network菜单下的Headers查看
- urlopen(…): 打开一个url,该函数的定义如下
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
url参数可以是一个字符串也可以是一个Request对象,更多的介绍可以查看开发文档 - read(): 读取页面返回的内容。
- decode():解码,我们读取回来的内容是经过编码后的字符串,如果不解码就看不明白都会来的字符串,如何查看页面是什么编码呢?我们可以通过开发者工具查看,也可以通过查看页面源代码查看网页编码。
- compile(): 编译正则表达式模块,这个函数将返回一个匹配模式对象,这里推荐大家写正则表达式的时候先把正则表达式预编译成一个对象,这样在查找的时候程序就不需要每次都再去编译一次正则表达式了,特别是对于在海量文本中查找的时候预编译正则规则尤为重要,预编译正则规则能提高你的代码执行效率
findall,sub等函数上一篇聚沙成塔–爬虫系列(三)(正则表达式)文章已经介绍过了,这里不在累诉。
note: 这里我们用到了前面章节介绍到的python的两种数据结果,列表和元组,还有for循环语法,函数findall返回的是一个list(列表),所以我们需要循环列表里的每个元素,每个元素代表一个被匹配上的用户信息,正则表达式中用()括号括起来的表示你要取的元素,它将会以元组的形式方法。到这里我们就完成了一个最基本的爬虫程序了,你是不是可以收集海量段子了,时不时的给妹子发个段子,是不是可以在妹子面前展示一下你的幽默诙谐了,哈哈。。。。,骚年这还不够,继续努力吧。。。。
更多的文章可以关注我的blog:http://www.gavinxyj.com