用python画竹子_基于Python的一个简单爬虫(糗事百科爬虫)
# -*- coding: utf-8 -*-
import urllib2
from bs4 import BeautifulSoup
import thread
import time
class qiushibaike:
"""docstring for ClassName"""
def __init__(self):
self.page = 1 #下载了的页数
self.pages = [] #保存已下载的html
self.enable = False #标志位
self.url='http://m.qiushibaike.com/hot/page/'
# 用于加载新的页面
def LoadPage(self):
# 如果用户未输入quit则一直运行
while self.enable:
# 如果pages数组中的内容小于5个
if len(self.pages) < 5:
try:
# 获取新的页面,加入到数组中
url=self.url+str(self.page)
newPage = self.GetHtml(url)
self.page += 1
self.pages.append(newPage)
except:
print '无法链接糗事百科!'
else:
time.sleep(1)
def ParseHtml(self,html):
items=self.GetContenBlock(html)
for item in items:
content=self.ParseContent(item)
try:
print u"作者",content['author'],u"时间:",content["time"]
print content["content"]
print '------------------------------------------'
except:
print u'尼玛这样都有错啊!'
#用来获取html
def GetHtml(self,url):
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(url,None,headers)
response = urllib2.urlopen(req)
html = response.read()
return html
def GetContenBlock(self,html):
soup = BeautifulSoup(str(html))
items=soup.findAll('div',{'class':'article block untagged mb15'})
return items;
def ParseContent(self,item):
#soup = BeautifulSoup(str(item))
content=item.find('div',{'class':'content'})
result={}
if content!=None:
try:
result["content"]=content.text.strip()
result["time"]=content.get("title").strip()
except:
result["content"]=None
result["time"]=None
else:
result["content"]=None
result["time"]=None
#author=item.find('div',{'class':'author clearfix'})
#if author!=None:
# result["author"]=author.findAll('a')[1].string
#else:
# result["author"]=None
result['author']=self.ParseAuthor(item)
return result;
def ParseAuthor(self,item):
try:
#soup = BeautifulSoup(str(item))
item=item.find('div',{'class':'author clearfix'})
if item!=None:
return item.findAll('a')[1].text
else:
return None;
except:
return None;
def Start(self):
self.enable = True
page = self.page
print u'正在加载中请稍候......'
# 新建一个线程在后台加载页面并存储
thread.start_new_thread(self.LoadPage,())
#----------- 加载处理糗事百科 -----------
while self.enable:
# 如果self的page数组中存有元素
if self.pages:
nowPage = self.pages[0]
del self.pages[0]
self.ParseHtml(nowPage)
page += 1
print u"""
---------------------------------------
程序:糗百爬虫
版本:0.1
作者:zz
日期:2013-05-15
语言:Python 2.7
功能:按下回车依次浏览今日的糗百热点
---------------------------------------
"""
print u'请按下回车浏览今日的糗百内容:'
raw_input(' ')
myModel = qiushibaike()
myModel.Start()
用python画竹子_基于Python的一个简单爬虫(糗事百科爬虫)相关推荐
- python画球鞋_基于Python爬虫原理的篮球鞋选择程序的设计与实现
基于 Python 爬虫原理的篮球鞋选择程序的设计与实现 张世元 [期刊名称] <通讯世界> [年 ( 卷 ), 期] 2019(026)002 [摘要] 伴随着篮球鞋工艺的进步及产业升级 ...
- 用python画竹子_初识Python
一:编程语言的分类 (1)机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合. (2)汇编语言 汇编语言采用的是英文缩写,标识符更容易识别和记忆,它同样需要编程者将每一步 ...
- Python爬虫 基于Beautiful Soup的糗事百科爬虫
python爬虫 ---- 糗事百科爬虫 首先进入糗事百科官网首页 -> 糗事百科 本次爬虫的目标是翻页爬取糗事百科的信息,包括 标题, 链接, 作者名, 好笑数&评论数 之后右键检查, ...
- python实现数据爬取——糗事百科爬虫项目
python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...
- 正则表达式re模式(python爬虫糗事百科热点段子)
python编程快速上手(持续更新中-) python爬虫从入门到精通 文章目录 python编程快速上手(持续更新中-) python爬虫从入门到精通 非结构化数据与结构化数据提取 概述 非结构化的 ...
- python多线程爬取段子_Python爬虫实例-多线程爬虫糗事百科搞笑内涵段子
学习爬虫,其乐无穷! 今天给大家带来一个爬虫案例,爬取糗事百科搞笑内涵段子. 爬取糗事百科段⼦,假设⻚⾯的 URL 是:http://www.qiushibaike.com/8hr/page/1 一. ...
- 用python画竹子_?【蟒蚺迷】BAMBOO BALLPYTHON!
原标题:?[蟒蚺迷]BAMBOO BALLPYTHON! BAMBOO BALLPYTHON 简称竹子球蟒...是2013年除了无鳞以外最重要的新变异基因了,配出来的品系十分梦幻,让不少商家都不自觉的 ...
- cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例
基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...
- python 人像素描_基于python实现把图片转换成素描
这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...
- python 英语分词_基于Python NLTK库进行英文文本预处理
文本预处理是要文本处理成计算机能识别的格式,是文本分类.文本可视化.文本分析等研究的重要步骤.具体流程包括文本分词.去除停用词.词干抽取(词形还原).文本向量表征.特征选择等步骤,以消除脏数据对挖掘分 ...
最新文章
- SQL Server常用约束表达式实例
- 第六章 培养感恩的习惯
- python 数据驱动接口自动化框架_用Python实现数据驱动的接口自动化测试
- [转]响应式web设计之CSS3 Media Queries
- 巧用万能驱动包安装驱动
- 用axure整理,体检软件-----第一天
- 脉冲触发器和边沿触发器的理解(移位寄存器采用边沿触发)
- java论文word_java毕设论文参考文献.doc
- mqtt 服务器 ca 证书,如何将SSL MQTT客户机与CA签名服务器证书连接?
- 漏型和源型区分,NPN和PNP区别
- 惠普HP Deskjet Ink Advantage 3540 打印机驱动
- GitLab基础:如何将备份恢复至更高版本的GitLab
- 公共场所的标志和说明英文表达100例
- android TextView向上滚动(模仿滚动文字广告效果)
- Tita的OKR:如何对OKR进行评分
- 为没有历史的互联网留下历史——闪客帝国回忆录
- 操作系统如何建立异常处理?
- iOS KVOKVC
- 【2017年第1期】我国大数据征信的挑战及对策
- 使用mindspore的ResNet101使用GPU进行训练时报错
热门文章
- python学习之数据爬取及其可视化分析(一)
- access工资明细表_利用ACCESS数据库报表功能制作工资条
- 阿里前浪产品人*N,也谈产品和PM
- 【JZOJ A组】Melancholy
- 消融实验(ablation study)是什么?
- Android虚拟机的理解和内存管理
- 远程过程调用失败 异常来自 HRESULT:0x800706BE
- 中国移动通信互联网短信网关接口协议 (China Mobile Peer to Peer, CMPP) (V2.0)
- T2695 桶哥的问题——送桶 题解
- MATLAB做三维图时值为0的点不画出来