Python3.x:抓取百事糗科段子
Python3.x:抓取百事糗科段子
实现代码:
1 #Python3.6 获取糗事百科的段子 2 import urllib.request #导入各类要用到的包 3 import urllib 4 import re 5 6 #用正则表达式爬取糗事百科的段子,并实现去除带有的图片段子,且每按一次回车键实现显示下一条段子 7 #写这程序的原理是先把网页爬下来,再解析匹配源代码中的段子,并把所有的带图片和不带图片的段子都进行保存 8 #再在输出段子时实现控制输出就能实现只输出不带图片的段子,并实现每按一次快捷键就显示下一个段子的内容 9 #就是好像每一页都有二十个段子的。。。。只爬下来十九。。。。 10 11 12 class QSBK(): 13 def __init__(self): 14 self.url='http://www.qiushibaike.com/hot/page/' #基础网址 15 self.user_agent='Mozilla/4.0(cpmpatible;MSIE 5.5;Windows NT)' #要添加的headers 16 self.headers={'User-Agent':self.user_agent} 17 self.item_joke=[] #用来保存段子的列表 18 19 #请求函数 20 def request(self,page): 21 request=urllib.request.Request(self.url+str(page),headers=self.headers) 22 response=urllib.request.urlopen(request) 23 return response.read().decode('utf-8') #将源代码进行编码转换为HTML格式 24 25 #将获取到的网页和正则表达式进行匹配并返回匹配到的每个段子的信息列表 26 def get_joke(self,content): 27 try: 28 pattern = re.compile('<.*?class="author.*?>.*?<a.*?<h2>(.*?)</h2>.*?<div.*?class="content".*?<span>(.*?)</span>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S) 29 self.item_joke.append(re.findall(pattern, content)) #将获取到的每一页的段子追加到存储列表中 30 except urllib.error.URLError as e: 31 if hasattr(e, "code"): 32 print(e.code) 33 if hasattr(e, "reason"): 34 print(e.reason) 35 36 #逻辑函数 37 def logic(self): 38 page=input('输入你想要进行爬取的页数:') 39 for i in range(int(page)): 40 content=self.request(i+1) 41 self.get_joke(content) 42 43 print('输出段子:') 44 i=0 #用来记录无图的段子 45 print('每按一次快捷键读取一条段子,按Q退出!') 46 for items in self.item_joke: #由于爬取到的数据返回是以列表形式返回一整夜的段子的,所以要用for循环嵌套进行输出 47 for item in items: 48 input_=input() 49 if input_=='Q': 50 return 51 if not re.search('img',item[2]): #筛选无图的段子输出 52 i+=1 53 print('\n作者:'+str(item[0]),'\n内容:'+str(item[1])+'\n点赞人数:'+str(item[3])) 54 print('\n段子输出完毕!\n段子数量为:',i) 55 56 qiushibaike=QSBK() 57 qiushibaike.logic()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南