Python爬虫实战(一):爬糗事百科段子
代码:
# _*_ coding:utf-8 _*_
import urllib2
import re
from datetime import datetimeclass QSBK:def __init__(self):self.pageIndex = 1self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'self.headers = {'User-Agent':self.user_agent}self.stories = []self.enable = Falsedef getPage(self,pageIndex):try:url = 'http://www.qiushibaike.com/hot/page'+str(pageIndex)request = urllib2.Request(url,headers = self.headers)response = urllib2.urlopen(request)pageCode = response.read().decode('utf-8')return pageCodeexcept urllib2.URLError,e:if hasattr(e,'reason'):print u"QSBK connect Error,reason: ",e.reasonreturn Nonedef getPageItems(self,pageIndex):pageCode = self.getPage(pageIndex)if not pageCode:print "Page Loading Error..."return Nonepattern = re.compile('<div.*?author clearfix">.*?<a.*?<img.*?>(.*?)</a>.*?<a.*?<h2>(.*?)</h2>.*?</a>.*?<div.*?'+'content">(.*?)<!--(.*?)-->.*?</div>.*?<div class="stats.*?class="number">(.*?)</i>',re.S)items = re.findall(pattern,pageCode)pageStories = []for item in items:haveImg = re.search("img",item[0])if not haveImg:replaceBR = re.compile('<br/>')text = re.sub(replaceBR,"\n",item[2])pageStories.append([item[1].strip(),text.strip(),item[3].strip(),item[4].strip()])return pageStoriesdef loadPage(self):if self.enable == True:if len(self.stories) < 2:pageStories = self.getPageItems(self.pageIndex)if pageStories:self.stories.append(pageStories)self.pageIndex += 1def getOneStory(self,pageStories,page):for story in pageStories:input = raw_input()self.loadPage()if input == 'Q':self.enable = Falsereturnprint u"第%d页\t发布人:%s\t发布时间:%s\t赞:%s\n%s" %(page,story[0],datetime.fromtimestamp(int(story[2])),story[3],story[1])def start(self):print u"正在读取糗事百科,按回车查看新段子,Q退出"self.enable = Trueself.loadPage()nowPage = 0while self.enable:if len(self.stories)>0:pageStories = self.stories[0]nowPage += 1del self.stories[0]self.getOneStory(pageStories,nowPage)spider = QSBK()
spider.start()
转载于:https://www.cnblogs.com/AndyJee/p/4997101.html
Python爬虫实战(一):爬糗事百科段子相关推荐
- Python爬虫实战:爬取维基百科
我们知道,百度百科一般极少收录英文词条 类似的,很容易想到爬取维基百科,思路也和爬取百度百科一样,只需处理一下请求地址和返回结果就好 下面也是直接放上代码,有不明白的地方可以看看注释: from lx ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- Python爬虫实战之爬取糗事百科段子
Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- 爬虫实战1:爬取糗事百科段子
本文主要展示利用python3.7+urllib实现一个简单无需登录爬取糗事百科段子实例. 如何获取网页源代码 对网页源码进行正则分析,爬取段子 对爬取数据进行再次替换&删除处理易于阅读 0. ...
- 网络爬虫---爬取糗事百科段子实战
Python网络爬虫 1.知识要求 掌握python基础语法 熟悉urllib模块知识 熟悉get方法 会使用浏览器伪装技术 如果您对相关知识遗忘了,可以点上面的相关知识链接,熟悉一下. 2.爬取糗事 ...
- Python之爬取糗事百科段子实战
"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读本文大约6分钟,实战学习,老表建议你反复看,反复记,反复练. // 本文作者 王豪 ...
- 【Python爬虫系列教程 28-100】小姐姐带你入门爬虫框架Scrapy、 使用Scrapy框架爬取糗事百科段子
文章目录 Scrapy快速入门 安装和文档: 快速入门: 创建项目: 目录结构介绍: Scrapy框架架构 Scrapy框架介绍: Scrapy框架模块功能: Scrapy Shell 打开Scrap ...
- Python3写爬虫(五)爬取糗事百科段子
2019独角兽企业重金招聘Python工程师标准>>> 最近几天开始用Python3改写网上用Python2写的案例,发现完全可以用Python3来重构Python2的源码.本篇文章 ...
最新文章
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- 使用python线性规划学习总结
- 锁 mysql_Mysql的锁(S锁和X锁的区别)
- 在C ++ STL中使用string :: to_string()将数字转换为字符串
- VSCode TODO 帮助扩展
- 5开发 时间格式化_2020年,前端开发者必备的10个VS Code扩展插件
- 【社招Java】腾讯、阿里,疯狂java讲义第五版pdf百度云
- fullcalendar日历控件知识点集合
- 总结在CentOS7上搭建CUDA10+cudnn7的Tensorflow-gpu环境的经验
- PR软件有哪些辅助功能?Premiere Pro 的辅助功能介绍
- 古典密码分析(冗余度,唯一解距离,语言统计,重合指数)
- 再次使用vue-awesome-swiper做异形轮播
- HTTP tunneling is disabled问题 解决
- Swift - 设置UILabel、UITextView的文字行间距
- 隔行换色并且鼠标指向行变色的表格
- Armadillo | 复数小记
- 复旦经管院李若山教授故事摘要
- 【SeMask】Semantically Masked Transformers for Semantic Segmentation
- 如何与安道拓Adient建立 EDI连接
- php的框架修改建议,thinkphp 框架适配修改
热门文章
- TFS 2010 备份和恢复的完整解决方案
- 详细讲解 委托和事件
- SilverLight是什么?(来自Csdn)
- 应用机器学习视频教程,哥伦比亚大学 2020版
- 一文读懂YOLOv5 与 YOLOv4
- CVPR 2020 Oral | 旷视提出目前最好的密集场景目标检测算法:一个候选框,多个预测结果...
- 「假期余额不足」安排用Python写个时间在线生成器 快夸我
- 年底清理垃圾了,整理了一整套python学习资料无偿送给大家
- PyTorch | torch.randperm()使用方法
- python数据处理随笔总结