Python爬虫案例:利用Python爬取笑话网
2018-06-18 02:59:44来源:未知 阅读 ()
学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下:
可以看到,笑话的链接列表都在<div class="list_title">里面,用正则表达式可以把最近的几个笑话地址找出来,再进到一个笑话页面看下:
每一个笑话页面里面是有多个小笑话组成的,全部在<span id="text110">标签下,每个小笑话又单独一个<p>包裹,这样非常容易就可以把每个单独笑话放到一个list中。由于我爬笑话的目的是每天白天一个小时发一个笑话,所以爬取20个是足够的了,每个页面平均有5个小笑话,爬4个页面就OK啦。这里有几个细节,这个笑话网有的链接是有中文的,比如:
1 <a href="/jokehtml/冷笑话/2014051200030765.htm" target="_blank">读书破万卷,搞笑如有神</a>
直接urllib.request.urlopen函数不能解析中文的URL,必须要urllib.parse先转码一下才能正确解析。还有一个细节是每段的小笑话之间是有换行的,用正则表达式的“.”是不能匹配换行符的,需要改成“[\w\W]”才能匹配。好了,下面是代码:
1 import urllib.request 2 import urllib.parse 3 import re 4 5 rule_joke=re.compile('<span id=\"text110\">([\w\W]*?)</span>') 6 rule_url=re.compile('<a href=\"(.*?)\"target=\"_blank\" >') 7 mainUrl='http://www.jokeji.cn' 8 url='http://www.jokeji.cn/list.htm' 9 10 req=urllib.request.urlopen(url) 11 html=req.read().decode('gbk') 12 urls=rule_url.findall(html) 13 f=open('joke.txt','w') 14 for i in range(4): 15 url2=urllib.parse.quote(urls[i]) 16 joke_url=mainUrl+url2 17 req2=urllib.request.urlopen(joke_url) 18 html2=req2.read().decode('gbk') 19 joke=rule_joke.findall(html2) 20 jokes=joke[0].split('<P>') 21 22 for i in jokes: 23 i=i.replace('</P>','') 24 i=i.replace('<BR>','') 25 i=i[2:] 26 f.write(i) 27 f.close()
看下爬取的结果:
这样,每行是一个单独的笑话,方便其他程序使用。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash