python大神写的代码_【python】抄写大神的糗事百科代码
importurllib.requestimporturllib.parseimportreimporttime#糗事百科爬虫类
classQSBK:#初始化方法,定义一些变量
def __init__(self):
self.pageIndex= 1self.user_agent= 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'self.headers= {'User-Agent': self.user_agent}#存放段子的变量,每个元素是每一页的段子
self.stories =[]#存放程序是否继续运行的变量
self.enable =False#传入某一页的索引获得页面代码
defgetPage(self, pageIndex):try:
url= 'http://www.qiushibaike.com/hot/page/' +str(pageIndex)
request= urllib.request.Request(url, headers =self.headers)
response=urllib.request.urlopen(request)
pageCode= response.read().decode('utf-8','ignore') #这个ignore忽略非法字符 一定要加 不然总报解码错误
returnpageCodeexcepturllib.error.URLError as e:if hasattr(e, "reason"):print(u"连接糗事百科失败,错误原因:", e.reason)returnNone#传入某一页代码,返回本页不断图片的段子列表
defgetPageItems(self, pageIndex):
pageCode=self.getPage(pageIndex)if notpageCode:print(u"页面加载失败....")returnNone
pattern= re.compile('
.*?(.*?).*?
'content">(.*?).*?
(.*?)
items=re.findall(pattern, pageCode)#用来存储每页的段子
pageStories =[]for item initems:
haveImg= re.search("img", item[3])if nothaveImg:
replaceBR= re.compile('
')
text= re.sub(replaceBR, "\n", item[1])
pageStories.append([item[0].strip(), text.strip(),item[4].strip()]) #.strip() 用来删除空白符
returnpageStories#加载并提取页面的内容,加入到列表中
defloadPage(self):#如果当前未看的页数少于2页,则加载新一页
if self.enable ==True:if len(self.stories) < 2:#获取新一页
pageStories =self.getPageItems(self.pageIndex)#将该页的段子存放到全局list中
ifpageStories:
self.stories.append(pageStories)#页码加1,下次读取下一页
self.pageIndex += 1
#每次敲回车打印一个段子
defgetOneStory(self,pageStories,page):#遍历一页的段子
for story inpageStories:#等待用户输入
input_v =input()#每当输入回车一次,判断一下是否要加载新页面
self.loadPage()#如果输入Q则程序结束
if input_v == "Q":
self.enable=Falsereturn
print(u"第%d页\t发布人:%s\t赞:%s\n%s" % (page, story[0], story[2],story[1]))#开始方法
defstart(self):print(u"正在读取糗事百科,按回车查看新段子,Q退出")#使变量为True,程序可以正常运行
self.enable =True#先加载一页内容
self.loadPage()#局部变量,控制当前读到2了第几页
nowPage =0whileself.enable:if len(self.stories) >0:#从全局list中获取一页段子
pageStories =self.stories[0]#当前读到的页数加1
nowPage += 1
#删除已经取出的元素
delself.stories[0]#输出该页的段子
self.getOneStory(pageStories,nowPage)
spider=QSBK()
spider.start()
python大神写的代码_【python】抄写大神的糗事百科代码相关推荐
- Python爬虫学习笔记 -- 爬取糗事百科
Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...
- python爬取糗事百科
本次要爬取的是糗事百科,地址如下:http://www.qiushibaike.com/8hr/page/1 1.思路分析: url地址的规律非常明显,一共只有13页url地址 2.确定数据的位置 数 ...
- python抓虫_python抓取糗事百科并保存文件的小虫虫代码
本帖最后由 ivenzlzhang 于 2018-8-21 14:13 编辑 本人python小白,近一个月在学习python编程,发现python强大的第三方库简直是小白的福音. 因此把学习用的知识 ...
- python爬虫经典段子_玩转python爬虫之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- python爬虫之糗事百科
历经1个星期的实践,终于把python爬虫的第一个实践项目完成了,此时此刻,心里有的只能用兴奋来形容,后续将继续加工,把这个做成一个小文件,发给同学,能够在cmd中运行的文件.简化版程序,即单单爬取页 ...
- python实现数据爬取——糗事百科爬虫项目
python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...
- Python爬虫实战(1):爬取糗事百科段子
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- Python爬虫批量下载糗事百科段子,怀念的天王盖地虎,小鸡炖蘑菇...
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- JavaScript获取本机浏览器UA助力Python爬取糗事百科首页
问题背景: 使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问.就像下面的403错误: 或者下面这种错误信息: 一般来说,这是遇到反爬机制了,对方要求使用浏览器访问.这时可 ...
最新文章
- 谷歌Nexus 3开售时间曝光
- Py-博客学习50问
- python包的init文件_Python模块包中__init__.py文件功能分析
- Python 基本语法规则
- Java8使用Stream的缺点是调试困难?教你一招你就不会这么认为了
- python备份虚拟环境
- R7-3 极坐标->直角坐标 (10 分)
- PHP socket初探 --- 一些零碎细节的拾漏补缺
- 解决svn中“工作副本已经锁定”,或者svn清理失败的解决方法
- Python 回归 普通最小二乘法(Ordinary Least Squares)
- 软件测试开发人员的价值如何体现?
- Windows下配置Squid反向代理服务器
- 计算机考研数学一大纲2016,2016年计算机考研大纲原文
- duilib开发(十):动态添加控件
- 吐血推荐:VBScript教程及语言参考电子书
- 043_Unicode对照表九
- windows下的gitbub使用入门
- 曾抵押房子炒币、与老婆差点离婚! 如今这位80后中科院博士竟...
- C# WPF MVVM 实战 – 4 - 善用 IValueConverter
- [BZFZ友谊赛]火山喷发
热门文章
- 排名怎么查_常见客户SEO问题解答:网站降权了应该怎么处理?
- 如何进行自动化PDF测试?这里有真正简单明了的方法
- 通达信波段王指标公式主图_通达信波段王主图指标公式
- c语言仓库即存储器,计算机基础4
- 固件升级_洛达1562a固件升级支持空间音频
- 创业负债累累 | 失败了的我还如何翻盘?是天台见! 我的故事还只是从这件事开始...
- c语言给定一个单链表输入k,C语言实现单链表(不带头结点)的基本操作
- uni 加入图标_uniapp中引入 iconfont
- python生成一个数组_在for循环中创建多个数组(Python)
- sublime中html自动对齐,sublime text怎么对齐HTML代码