首页 > 代码库 > python3自动爬笑话

python3自动爬笑话

        学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下:



        可以看到,笑话的链接列表都在<div class="list_title">里面,用正则表达式可以把最近的几个笑话地址找出来,再进到一个笑话页面看下:



        每一个笑话页面里面是有多个小笑话组成的,全部在<span id="text110">标签下,每个小笑话又单独一个<p>包裹,这样非常容易就可以把每个单独笑话放到一个list中。由于我爬笑话的目的是每天白天一个小时发一个笑话,所以爬取20个是足够的了,每个页面平均有5个小笑话,爬4个页面就OK啦。这里有几个细节,这个笑话网有的链接是有中文的,比如:

<a href=http://www.mamicode.com/"/jokehtml/冷笑话/2014051200030765.htm" target="_blank">读书破万卷,搞笑如有神

直接urllib.request.urlopen函数不能解析中文的URL,必须要urllib.parse先转码一下才能正确解析。还有一个细节是每段的小笑话之间是有换行的,用正则表达式的“.”是不能匹配换行符的,需要改成“[\w\W]”才能匹配。好了,下面是代码:

import urllib.request
import urllib.parse
import re

rule_joke=re.compile(‘<span id=\"text110\">([\w\W]*?)</span>‘)
rule_url=re.compile(‘<a href=http://www.mamicode.com/"(.*?)\"target=\"_blank\" >‘)>
看下爬取的结果:



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


转载请注明:转自http://blog.csdn.net/littlethunder/article/details/25693641