python3自动爬笑话
来源:互联网 发布:淘宝客属于什么流量 编辑:程序博客网 时间:2024/06/06 14:01
学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下:
可以看到,笑话的链接列表都在<div class="list_title">里面,用正则表达式可以把最近的几个笑话地址找出来,再进到一个笑话页面看下:
每一个笑话页面里面是有多个小笑话组成的,全部在<span id="text110">标签下,每个小笑话又单独一个<p>包裹,这样非常容易就可以把每个单独笑话放到一个list中。由于我爬笑话的目的是每天白天一个小时发一个笑话,所以爬取20个是足够的了,每个页面平均有5个小笑话,爬4个页面就OK啦。这里有几个细节,这个笑话网有的链接是有中文的,比如:
- <a href="/jokehtml/冷笑话/2014051200030765.htm" target="_blank">读书破万卷,搞笑如有神</a>
直接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=\"(.*?)\"target=\"_blank\" >')
- 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('<P>')
- for i in jokes:
- i=i.replace('</P>','')
- i=i.replace('<BR>','')
- i=i[2:]
- f.write(i)
- f.close()
看下爬取的结果:
0 0
- python3自动爬笑话
- python3自动爬笑话
- python3自动爬笑话
- python3自动爬笑话
- python3自动爬笑话(留下学习)
- Python3.5.1获取笑话
- 使用Python3和BeautifulSoup爬取笑话网站内容,并导入Excel
- 定时给ta讲笑话python3.x
- python3自动登录
- Python2自动转Python3
- Python3之自动登录
- Python3.x爬虫教程:爬网页、爬图片、自动登录
- Python3.x爬虫教程:爬网页、爬图片、自动登录
- python3.2 自动登录网站
- python3+selenium实现自动签到
- python3.4 自动生成身份证号
- 笑话
- 笑话
- Python脚本定期执行
- VMWare里安装64位Linux 的方法
- Java设计模式之责任链
- 博文说明
- 最小费用最大流-poj-2135
- python3自动爬笑话
- Linux下启动停止查看杀死Tomcat进程
- 建立云端
- POJ-3224
- 读书笔记:计算机网络第3章:重发技术、多址技术、交换技术
- 006 sql server界面视图分析 数据库结构
- 调试程序出错/usr/bin/ld: cannot open output file test: Is a directory
- debian下ping命令向目的主机发送ICMP报文的实现代码
- js超级总结