博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3自己主动爬笑话
阅读量:5158 次
发布时间:2019-06-13

本文共 1134 字,大约阅读时间需要 3 分钟。

        学校的server能够上外网了,所以打算写一个自己主动爬取笑话并发到bbs的东西,从网上搜了一个笑话站点,感觉大部分还不太冷。html结构例如以下:

        能够看到,笑话的链接列表都在<div class="list_title">里面,用正則表達式能够把近期的几个笑话地址找出来,再进到一个笑话页面看下:

        每一个笑话页面里面是有多个小笑话组成的。所有在<span id="text110">标签下,每一个小笑话又单独一个<p>包裹,这样很easy就能够把每一个单独笑话放到一个list中。因为我爬笑话的目的是每天白天一个小时发一个笑话。所以爬取20个是足够的了,每一个页面平均有5个小笑话,爬4个页面就OK啦。

这里有几个细节。这个笑话网有的链接是有中文的,比方:

读书破万卷,搞笑如有神
直接urllib.request.urlopen函数不能解析中文的URL。必需要urllib.parse先转码一下才干正确解析。另一个细节是每段的小笑话之间是有换行的,用正則表達式的“.”是不能匹配换行符的,需要改成“[\w\W]”才干匹配。好了,以下是代码:

import urllib.requestimport urllib.parseimport rerule_joke=re.compile('([\w\W]*?)')rule_url=re.compile('')mainUrl='http://www.jokeji.cn'url='http://www.jokeji.cn/list.htm'req=urllib.request.urlopen(url)html=req.read().decode('gbk')urls=rule_url.findall(html)f=open('joke.txt','w')for i in range(4):	url2=urllib.parse.quote(urls[i])	joke_url=mainUrl+url2	req2=urllib.request.urlopen(joke_url)	html2=req2.read().decode('gbk')	joke=rule_joke.findall(html2)	jokes=joke[0].split('

') for i in jokes: i=i.replace('

','') i=i.replace('
','') i=i[2:] f.write(i)f.close()
看下爬取的结果:

        这样,每行是一个单独的笑话。方便其它程序使用。

转载请注明:转自

转载于:https://www.cnblogs.com/yfceshi/p/7272702.html

你可能感兴趣的文章
swift中数据之间的转换
查看>>
【iOS】Swift4.0 GCD的使用笔记
查看>>
Swift - 将String类型的数字转换成数字类型(支持十进制、十六进制)
查看>>
学校简易管理系统(python面向对象无界面版)
查看>>
运动员喝饮料问题
查看>>
[IMX6]Android6.0移植和分析
查看>>
第一章 spring boot实例项目快速搭建
查看>>
巧用UserAgent来解决浏览器的各种问题
查看>>
Java 新手学习 CSS样式列表 排版 格式布局
查看>>
jQuery概述
查看>>
(ios实战)实现类似于android 的toast控件
查看>>
mysql传统主从、双主复制+keepalived配置步骤
查看>>
关于MarshalByRefObject的解释
查看>>
vue之路由传参
查看>>
基于jquery的页面分屏切换模板
查看>>
《经济学通识》七、医患关系,毒奶和产品质量
查看>>
验证码校验的前世今生及心得体会
查看>>
log4net 开启内部调试
查看>>
Java多线程学习笔记(二)
查看>>
地图源改变之后mxd文件打开很慢的问题
查看>>