python3自己主动爬笑话

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl0dGxldGh1bmRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl0dGxldGh1bmRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

每一个笑话页面里面是有多个小笑话组成的。所有在<span id="text110">标签下,每一个小笑话又单独一个<p>包裹,这样很easy就能够把每一个单独笑话放到一个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()

看下爬取的结果:

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

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

时间: 2024-10-11 04:36:35

python3自己主动爬笑话的相关文章

python3自动爬笑话

学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下: 可以看到,笑话的链接列表都在<div class="list_title">里面,用正则表达式可以把最近的几个笑话地址找出来,再进到一个笑话页面看下: 每一个笑话页面里面是有多个小笑话组成的,全部在<span id="text110">标签下,每个小笑话又单独一个<p>包裹,这样非常容易就可以把每

Scrapy研究探索(六)——自己主动爬取网页之II(CrawlSpider)

原创,转载注明:http://blog.csdn.net/u012150179/article/details/34913315 一.目的. 在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中使用基于Spider实现了自己的w3cschool_spider,并在items.py中定义了数据结构, 在pipelines.py中实现获得数据的过滤以及保存. 可是以上述方法仅仅能爬取start_url列表中的网页.而网络爬

python3 爬虫之爬取糗事百科

闲着没事爬个糗事百科的笑话看看 python3中用urllib.request.urlopen()打开糗事百科链接会提示以下错误 http.client.RemoteDisconnected: Remote end closed connection without response 但是打开别的链接就正常,很奇怪不知道为什么,没办法改用第三方模块requests,也可以用urllib3模块,还有一个第三方模块就是bs4(beautifulsoup4) requests模块安装和使用,这里就不说

python3 爬虫之爬取安居客二手房资讯(多线程版)

第一步先分析网站结构http://esf.zs.fang.com/ 寻找我们需要获取的信息,点击进去看看, 链接里面信息更加详细,这些就是我们要获取的. 1.我们可以先获取http://esf.zs.fang.com/链接下的所有详细链接http://esf.zs.fang.com/chushou/3_255784229.htm 2.然后可以在详细链接下分析获取我们所需要的数据 3.获取数据之后存取到数据库mongodb 打开管理员工具F12观察http://esf.zs.fang.com/的详

【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对IP的检测.本文介绍的是利用Redis数据库实现的分布式爬虫,Redis是一种常用的菲关系型数据库,常用数据类型包括String.Hash.Set.List和Sorted Set,重要的是Redis支持主从复制,主机能将数据同步到从机,也就能够实现读写分离.因此我们可以利用Redis的特性,借助req

Python3使用BeautifulSoup4爬取《三国演义》

#!/sur/bin/python#conding=utf-8import urllib.requestfrom bs4 import BeautifulSoupurl="http://www.shicimingju.com/book/sanguoyanyi.html" # 要爬取的网络地址menuCode=urllib.request.urlopen(url).read() # 将网页源代码赋予menuCodesoup=BeautifulSoup(menuCode,'html.par

python3.4+selenium爬58同城(一)

爬取http://bj.58.com/pbdn/0/pn2/中除转转.推广商品以外的产品信息,因为转转和推广的详情信息不规范,需要另外写一个方法存放,后期补上,详情页如下 这周学习了爬虫,但是遇到一些js,requests方法无法渲染,比如浏览量,所以结合selenium+phantomjs渲染网页,获取信息 上代码,注释中详细解释: from selenium import webdriverfrom bs4 import BeautifulSoupimport re class GetPag

Python3.5:爬取网站上电影数据

首先我们导入几个pyhton3的库: from urllib import requestimport urllibfrom html.parser import HTMLParser 在Python2和Python3之间一个重要区别就是,在Python2有urllib,urllib2两个库,在Python3整合到一起,里面的函数方式也有一点变,先定义一个函数,将header,url,request,都打包成一个函数方便调用,且看下面代码: def print_movies(url): # 伪装

【Python3 爬虫】爬取博客园首页所有文章

首先,我们确定博客园首页地址为:https://www.cnblogs.com/ 我们打开可以看到有各种各样的文章在首页,如下图: 我们以上图标记的文章为例子吧!打开网页源码,搜索Docker,搜索结果如下图: 从上图后红色标记部分可以看出,我们使用正则表达式即可匹配该网址,我们匹配到该网址之后,将该网址对应的内容下载到到底进行存储. 实现代码 import urllib.request import re """ 爬取cnblogs首页所有的文章 ""&