import urllib.request
import urllib.parse
import urllib.error
import http.cookiejar
import re
class QSBK :
#初始化方法,定义一些变量
def __init__(self) :
self.pageIndex = 1
self.user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"
#初始化headers
self.headers = ("User-Agent", self.user_agent)
self.stories = []
self.enable = False
print(self.headers)
self.cj=http.cookiejar.CookieJar()
self.opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
self.opener.addheaders=[self.headers,('Cookie','4564564564564564565646540')]
urllib.request.install_opener(self.opener)
def getPage(self,pageIndex) :
try :
url = "http://www.qiushibaike.com/hot/page/"+str(pageIndex)
#构建请求的url
response = urllib.request.urlopen(url)
mybytes = response.read()
mybytes = mybytes.decode("utf8")
return mybytes
except urllib.error.URLError as e:
print("出错了")
def getPageItems(self,pageIndex) :
pageCode = self.getPage(pageIndex)
if not pageCode:
print ("页面加载失败....")
return None
pattern = re.compile('<div.*?class="author.*?>.*?<a.*?>(.*?)</a>.*?<div.*?class'+
'="content">(.*?)</div>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S)
items = re.findall(pattern,pageCode)
pageStories = []
for item in items:
pos = item[1].find("<!--")
#print(pos)
#print(item[1][0:pos])
#print(item[1][pos+4:len(item[1])-5])
content = item[1][0:pos]
timestamp = item[1][pos+4:len(item[1])-5]
author = item[0][item[0].find("/>")+2:len(item[0])]
#print(timestamp)
#print(item[3])
#print(content.strip()+"\n")
#是否含有图片
haveImg = re.search("img",content)
#如果不含有图片,把它加入list中
if not haveImg:
if int(item[3]) > 200 :
#print(author.strip()+",写于"+timestamp+",获得"+item[3]+"点赞")
pageStories.append([author.strip(),timestamp.strip(),content.strip(),int(item[3])])
return pageStories
def loadPage(self) :
#如果当前未看的页数少于2页,则加载新一页
if self.enable == True:
if len(self.stories) < 2:
#获取新一页
pageStories = self.getPageItems(self.pageIndex)
#将该页的段子存放到全局list中
if pageStories:
self.stories.append(pageStories)
#获取完之后页码索引加一,表示下次读取下一页
self.pageIndex += 1
def getOneStory(self,pageStories,page) :
#遍历一页的段子
for story in pageStories:
#等待用户输入
instr = input()
#每当输入回车一次,判断一下是否要加载新页面
self.loadPage()
#如果输入Q则程序结束
if instr == "Q":
self.enable = False
return
print ("第%d页,%s发布于%s,获得%s赞:\n%s" %(page,story[0],story[1],story[3],story[2]))
#开始方法
def start(self):
print ("正在读取糗事百科,按回车查看新段子,Q退出")
#使变量为True,程序可以正常运行
self.enable = True
#先加载一页内容
self.loadPage()
#局部变量,控制当前读到了第几页
nowPage = 0
while self.enable:
if len(self.stories)>0:
#从全局list中获取一页的段子
pageStories = self.stories[0]
#当前读到的页数加一
nowPage += 1
#将全局list中第一个元素删除,因为已经取出
del self.stories[0]
#输出该页的段子
self.getOneStory(pageStories,nowPage)
spider = QSBK()
spider.start()
分享到:
相关推荐
糗事百科的爬虫,是主要用来介绍爬虫的一些基本知识,方便大家爬取简单的糗事百科的内容,利用的是beautifulsoup
scrapy抓取糗事百科热门
代码中使用这个网址获取网页中的信息的。...每一页显示20条糗事,每条糗事有头像,用户姓名,糗事内容,糗事内容图片(该图片可有可无,没有图片的话,糗事内容就是纯文本形式),以及点赞或者好笑数量。
使用Python3.6抓取糗百、不得姐、kanqu.com数据,完整代码可运行,内附使用说明(main.py),及运行演示(demo.gif).
用Python写的糗事百科的网络爬虫。 使用方法: 新建一个Bug.py文件,然后将代码复制到里面后,双击运行。 程序功能: 在命令提示行中浏览糗事百科。 原理解释: 首先,先浏览一下糗事百科的主页:...
1.抓取糗事百科热门段子; 2.过滤带有图片的段子; 3.实现每按一次回车显示一个段子的发布时间,发布人,段子内容,点赞数。 糗事百科是不需要登录的,所以也没必要用到Cookie,另外糗事百科有的段子是附图的,我们...
主要介绍了python爬虫爬取糗事百科段子,详细介绍下,如何来抓取到糗事百科里面的指定内容,感兴趣的小伙伴们可以参考一下
主要介绍了Python实现爬虫抓取与读写、追加到excel文件操作,结合具体实例形式分析了Python针对糗事百科的抓取与Excel文件读写相关操作技巧,需要的朋友可以参考下
下面小编就为大家分享一篇Python多线程爬虫实战_爬取糗事百科段子的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Python 模拟抓取百度贴吧爬虫源码,除了抓取百度贴吧,还模拟抓取了糗事... 关于抓取糗事百科内容: 操作:输入quit退出阅读糗事百科 功能:按下回车依次浏览今日的糗百热点 更新:解决了命令提示行下乱码的问题
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
python 使用django框架抓取并显示糗百内容到html页面上。 爬取数据使用requests包,分析数据使用到了pyquery包。 前端页面集成bootstrap框架。
1.抓取糗事百科热门段子 2.过滤带有图片的段子
糗事百科 百度帖吧 pixabay图片网站 pexels图片网 info社区 教务网 拉勾 豆瓣 二、进阶篇 抓取手机App数据 断点续爬 三、框架篇(Scrapy) scrapy爬多级网页及图片(一般方法) scrapy爬多级网页及图片...
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
您可能感兴趣的文章:通过python下载FTP上的文件夹的实现代码python批量下载壁纸的实现代码用python下载百度文库的代码下载糗事百科的内容_python版使用Python编写简单网络爬虫抓取视频下载资源python多线程http下载...
一步一步构建一个爬虫实例,抓取糗事百科的段子 先不用beautifulsoup包来进行解析 第一步,访问网址并抓取源码 # -*- coding: utf-8 -*- # @Author: HaonanWu # @Date: 2016-12-22 16:16:08 # @Last Modified by: ...
spider_python前言如果想查看详细的教程,请关注微信公众号:AirPython普通的爬虫多线程爬虫Selenium 自动化爬虫Scrapy 框架爬虫爬取糗事百科的段子保存到 JSON 文件中爬取微信小程序论坛的数据登录豆瓣网并修改个性...