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

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

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

[html] view plaincopyprint?
  1. <a href="/jokehtml/冷笑话/2014051200030765.htm" target="_blank">读书破万卷,搞笑如有神</a>
<a href="/jokehtml/冷笑话/2014051200030765.htm" target="_blank">读书破万卷,搞笑如有神</a>

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

[python] view plaincopyprint?
  1. import urllib.request
  2. import urllib.parse
  3. import re
  4. rule_joke=re.compile('<span id=\"text110\">([\w\W]*?)</span>')
  5. rule_url=re.compile('<a href=\"(.*?)\"target=\"_blank\" >')
  6. mainUrl='http://www.jokeji.cn'
  7. url='http://www.jokeji.cn/list.htm'
  8. req=urllib.request.urlopen(url)
  9. html=req.read().decode('gbk')
  10. urls=rule_url.findall(html)
  11. f=open('joke.txt','w')
  12. for i in range(4):
  13. url2=urllib.parse.quote(urls[i])
  14. joke_url=mainUrl+url2
  15. req2=urllib.request.urlopen(joke_url)
  16. html2=req2.read().decode('gbk')
  17. joke=rule_joke.findall(html2)
  18. jokes=joke[0].split('<P>')
  19. for i in jokes:
  20. i=i.replace('</P>','')
  21. i=i.replace('<BR>','')
  22. i=i[2:]
  23. f.write(i)
  24. f.close()
import urllib.request
import urllib.parse
import rerule_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+url2req2=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()

看下爬取的结果:

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

转自http://blog.csdn.net/littlethunder/article/details/25693641

python3自动爬笑话相关推荐

  1. python3自动爬笑话(留下学习)

    学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下: 可以看到,笑话的链接列表都在<div class=&quo ...

  2. python3自动爬取网页资源并保存为epub电子书

    使用Python获取网页内容并生成EPUB格式电子书 前言 EPUB的介绍 思路 代码示例 前言 现在的有很多电子书都不能下载了,只能在线看,但是广告又多.所以想编个程序抓取这些内容生成电子书. EP ...

  3. Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  4. python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片

    python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片 1.前言 在上一篇文章urllib使用:根据关键词自动爬取下载百度图片 当中,我们已经分析过了百度图片的搜索URL的变化 ...

  5. python3自己主动爬笑话

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

  6. 自动爬取bilibi小视频

    自动爬取bilibi小视频 实验环境 实验步骤 第一步:查找request URL请求地址 第二步:代码实现 1.访问目标网址代码 2.下载情况展示 3.编写主函执行程序 实验环境 Chrome 浏览 ...

  7. Python3从零开始爬取今日头条的新闻【一、开发环境搭建】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  8. 使用Selenium模拟浏览器,实现自动爬取数据

    最近需要在一个网站下载一批数据.但是输入一个查询,返回三四万条结果,每次只能导出500条,而且每次还得输入下载条目的范围!这样点击下载,还不要了我的老命.于是乎想自动化这个过程. 我的需求主要是两点: ...

  9. 爬虫实战:批量爬取京东内衣图片(自动爬取多页,非一页)

    做下男生想做的事,爬取大量妹子内衣图. 作者: 电气-余登武 准备工作 假如我们想把京东内衣类商品的图片全部下载到本地,通过手工复制粘贴将是一项非常庞大的工程,此时,可以用python爬虫实现. 第一 ...

最新文章

  1. HttpClient 详解一《C#高级编程(第9版)》
  2. python不断刷新网页_python使用多线程不断刷新网页的方法
  3. python 模拟浏览器下载文件-Python 模拟浏览器 获取SVN 文件
  4. python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...
  5. Windows 8 HTML5/JS评论引发开发者群中的慌乱
  6. 如何自定义SAP Spartacus 产品明细的url pattern
  7. SRM 440(1-250pt, 1-500pt)
  8. 阿里云加入开放媒体联盟AOM
  9. PyTorch 1.0 中文文档:torch.hub
  10. 计算机算法设计与分析 数字三角形
  11. (二)zookeeper安装
  12. 双击java安装包没有反应_win7系统双击JeR安装包没有任何反应的解决方法
  13. iptv管理系统php制作,云水日记-双子星IPTV管理系统搭建教程
  14. python手动安装依赖包
  15. win10提示无法打开这个应用怎么办
  16. ITK4.12+VS2015配置详解
  17. 微信小程序商城购物车页 二维数组怎么做
  18. Verilog练习:HDLBits笔记15
  19. python界面小游戏贪吃蛇_用Python实现童年小游戏贪吃蛇
  20. 麻将胡牌算法带癞子 python实现

热门文章

  1. 分享一个Java毕业设计项目——叮当书城项目
  2. 黑马java课程2222
  3. GEO振弦式钢筋计适用范围
  4. 网站打不开域名无法访问是怎么回事?(网页无法访问域名被封暂停解析的解决方案)
  5. JS计算请假时间(起始时间与终止时间可跨月)
  6. Trie字典树(1)—— 字典树查询
  7. 室内地图商场停车场室内定位导航拓展方案应用
  8. 分享十个法国平面设计的创意思维
  9. 黑马程序员__关于自己的一些学习死角的再学习(基于老毕的java基础视频)
  10. 成为FSD(全栈工程师)