python实现数据爬取——糗事百科爬虫项目

python实现数据爬取——糗事百科爬虫项目

# urllib.request 请求模块
import urllib.request
# re 模块使 Python 语言拥有全部的正则表达式功能。
import re
# 定义了一个方法,url网络地址、page
def getcontent(url,page):
    headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0")
    opener = urllib.request.build_opener()
    opener.addheaders =[headers]
    # 将opener装为全局
    urllib.request.install_opener(opener)
    data=urllib.request.urlopen(url).read().decode("utf-8")
    # 构建对应用户提取的正则表达式
    userpat='<h2>(.*?)</h2>'
    # 构建段子内容提取的正则表达式
    contentpat='<div class="content">(.*?)</div>'
    # 寻找出所有的用户
    userlist=re.compile(userpat,re.S).findall(data)
    # 寻找出所有内容
    contentlist=re.compile(contentpat,re.S).findall(data)
    x=1
    for content in contentlist:
        content=content.replace("\n","")
        # 用脂肪层作为变量名,先将对应字符串赋值给一个变量
        name="content"+str(x)
        # 通过exec()函数实现用字符串作为变量名并赋值
        exec(name+'=content')
        x+=1
    y=1
    for user in userlist:
        name="content"+str(y)
        print("用户"+str(page)+str(y)+"是:"+user)
        print("内容是:")
        exec("print("+name+")")
        print("\n")
        y+=1
for i in range(1,3):
    url="https://www.qiushibaike.com/text/page/"+str(i)
    getcontent(url,i)

以上代码是针对糗事百科的爬虫项目,运行效果如下:

PyDev console: starting.
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
>>> runfile('E:/ending crazy/python课程学习/爬虫/代码文件/第六章/糗事百科.py', wdir='E:/ending crazy/python课程学习/爬虫/代码文件/第六章')
用户11是:
石锅拌着饭
内容是:
<span>小学的时候因个子矮小老是受欺负,排座位只能挨着最丑的学渣坐,打饭只能排最后面吃残菜剩羹,连回家路上都不许和长得漂亮的女同学走一条道。<br/><br/>为此我苦恼不已,直到和二表哥玩一起后终于知道了原因,原来是因为我没学会抽烟。<br/><br/>用二表哥的话说,抽烟那是混社会的人才敢干的事,你连烟都敢抽了谁还敢惹你?<br/><br/>二表哥就是二表哥,这话让我是茅塞顿开,容光焕发,回光返照……烟还没学会已经憧憬起以后在学校当扛把子的时光,上课挨着漂亮妹子坐,饭有人打到面前,后面一个捏肩膀,前面两个按脚……<br/><br/>说到就做,先是偷当班主任的二舅…</span><span class="contentForAll">查看全文</span>
用户12是:
空城旧梦她与伞
内容是:
<span>我堂哥结婚时,选的是2月14情人节,堂哥嘿嘿的对我说道:<br/>学着点啊,这以后结婚纪念日和情人节一起过,可以省下一大笔开支啊。<br/>我恍然大悟,第二年也选择了双十一那天结婚,光棍节脱单,意义更重大。<br/>万万没想到啊,后来每年的双十一,媳妇买买买的理由理直气壮:老公,为了庆祝咱们的结婚纪念日,我要买点东西。<br/>特么的,这下开支更大啦 !!</span>
用户13是:
狐地瓜大人
内容是:
<span>跟老婆吃饭一般都是点外卖对付。。。有天老婆吃着外卖说:“亲爱的,以后我们有了宝宝,也要给宝宝吃外卖吗?”<br/>听了老婆的话,我陷入沉思,之后就走上了一条买菜做饭的不归路…</span>
用户14是:
坏小孩cium
内容是:
<span>闺蜜老公特别宠她,闺蜜上班第一天,他老公对她说:我对你最大的期望就是:上班开开心心工作,下班安安全全到家。<br/>没错,闺蜜真的做到了,上班工作同事们抢着帮她做,下班了领导同事轮流送她回家。。。</span>
用户15是:
骑着二哈啃黄瓜
内容是:
<span>最近换季,办公室好多感冒了,好多中标的都在吃感冒冲剂,严重的在吃药。。。<br/>闺蜜一大早过来办公室讨论问题,看到大家都在吃药,她屁颠屁颠的跑过去蹭药吃,我关心的问她:你怎的也感冒了?闺蜜叹了一口气:那么多感冒的,我怕被传感到,吃点药预防预防。。。</span>
用户16是:
忧郁的创可贴
内容是:
<span>晚饭后跟老妈河边散步,老妈眼尖,远远看着有一人蹲在路边草丛里。就问我,闺女啊,你瞅路边那男的蹲那干啥呢?<br/>我定睛一看,一年轻男子,蹲在那,应该是在上大号。<br/>于是我拉住老妈说:人有三急,您就当没看见吧,咱俩低头走过去就行啦。<br/>后来,我俩往回走,经过河边一个休闲区,有一个臭豆腐摊,好多人围着,年轻摊主卖力的吆喝,我被那味道吸引,走过去想买点尝尝,老妈仔细一看,脱口而出:咦,这老板不就是刚才在草丛里拉屎那人吗?<br/>永远忘不了摊主那哀怨…</span><span class="contentForAll">查看全文</span>
用户17是:
吃了两碗又盛
内容是:
<span>儿子六年级的时候,喜欢班上一个女同学,这我们是知道的。两年了,这俩孩子依然比平常同学关系要近些。<br/><br/>昨天那个女同学的妈妈到我店里来买东西,我媳妇跟她聊了很长时间。<br/><br/>媳妇后来说:当时我竟然有种会亲家的感觉,,</span>
用户18是:
坏小孩cium
内容是:
<span>朋友公司有个小李请病假长假,和他们老板解释说是身体出现问题,需要去治疗。<br/>       昨天我和朋友去体检, 知道他之前报备的医院和病房号,顺道过去看看他。<br/>        刚走到病房门口,就看到​小李腻着人家漂亮的护士姐姐:我的身体数据怎么会都健康呢,肯定有血压不稳,心律不齐这些万能狗皮膏药病,不行我还得再住院一段时间,这样你就能天天过来看我了。。。</span>
用户19是:
偷惢
内容是:
<span>小时候我跟弟弟总是抢同一样东西,每次都找妈妈评理,妈妈不胜其烦。<br/>终于有次,在我跟弟弟一人拽着爸爸一边胳膊找到妈妈时,妈妈拿了把刀出来,问我们:要不,一人一半?<br/>从那以后,我们再也没抢过东西了……</span>
用户110是:
无书斋主
内容是:
<span>昨天超市搞活动,满一百零一可以抽奖。<br/>大家都在排队的时间,一个年轻小伙大叫:借过借过,让下让下……<br/>就这样叫着这货竟然跑到抽奖第一个去了……<br/><br/>特么,我排了半个小时,前面还有十多个,心里顿时炸毛:插什么队?没看见大家都排在这里吗??<br/><br/>这货回头鼓眼:你有意见?<br/><br/>我正想大吼时,发现没一个人发声,都看着我!<br/>算了!!没意见!……</span>
用户111是:
吃了两碗又盛
内容是:
<span>儿子的期中考试成绩下来了,比上次考试的学年名次前进了三十多名,全家人都很高兴。<br/>吃饭的时候,已经戒酒一个多月的老爸,给自己倒了一杯白酒说:我孙子考得好,今天破例一次。<br/>我那因减肥长期处于饥饿状态的媳妇见了忙附和说:对对,我儿子考这么好,我今天一定多吃一碗饭!</span>
用户112是:
狐地瓜大人
内容是:
<span>猎头找到我同事想要挖人,同事拒绝了。猎头多次找到同事想要挖他。同事烦了,就把我的联系方式给了猎头,后来我被挖走了,而那名同事坐上了我的位置…</span>

注意点:

1.由于现在网页都有基本的ip地址检查,所以当频繁进行访问,或者访问时的文件以.py结尾时,就会被标记为爬虫,所以要进行简单的伪装,伪装的方法如下:

1.1进入要爬取的网页:

在这里插入图片描述
在这里插入图片描述

1.3 点一个状态为200的get方法,在下面有一个User-Agent

​ Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0

在这里插入图片描述
在这里插入图片描述

PS:每台电脑的User-Agent后面对应的值都不完全一样,所以要注意

2.re模块的正则表达式对应规则

2.1 对应的网页字段的变化,正则表达式的匹配
 # 构建对应用户提取的正则表达式
    userpat='<h2>(.*?)</h2>'
    # 构建段子内容提取的正则表达式
    contentpat='<div class="content">(.*?)</div>'

如果觉得以上的文章写的好,或者对你有帮助的话,请点个关注,你的关注是我最大的创作动力!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值