开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

山鬼谣/python

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
python
/
python-object.py
python
/
python-object.py
python-object.py 5.05 KB
一键复制 编辑 原始数据 按行查看 历史
山鬼谣 提交于 2016年11月16日 23:11 +08:00 . python爬虫
# -*- coding:utf-8 -*-
import re
import urllib
import urllib.request
import gzip
import http.cookiejar
import io
import sys
# gb18030
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
class QSBK:
global s
# 初始化方法,定于一些变量
def __init__(self):
self.pageIndex = 1
# 模拟浏览器
self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'
# 把模拟的信息保存到请求头中
self.headers = {'User-Agent': self.user_agent}
# 存放段子的变量,每个元素是每一页的段子们
self.stories = []
# 存放程序是否继续运行的变量
self.enable = False
# 传入某一页的索引获得页面代码
def getPage(self, pageIndex):
try:
url = 'http://www.qiushibaike.com/hot/page/' + str(pageIndex)
# 构建request请求
request = urllib.request.Request(url, headers=self.headers)
# 利用urlopen获取页面代码
response = urllib.request.urlopen(request)
# 将页面转换为utf-8
pageCode = response.read().decode('utf-8')
return pageCode
except Exception as e:
print('连接糗事百科失败,错误原因:' + e)
return None
# 传入某一页代码,返回本页不带图片的段子列表
def getPageItems(self, pageIndex):
pageCode = self.getPage(pageIndex)
if not pageCode:
print('页面加载失败。。。')
return None
strRex = ('<div class="author clearfix">.*?<h2>(.*?)</h2>.*?<div class="articleGender.*?">(.*?)</div>' +
'.*?<div class="content">(.*?)</div>(.*?)<div class="stats.*?class="number">(.*?)</i>')
pattern = re.compile(strRex, re.S)
items = re.findall(pattern, pageCode)
# 用来存储每页的段子们
pageStories = []
# 遍历正则表达式匹配的信息
for item in items:
# 是否含有图片
haveImg = re.search("img", item[3])
# 如果不含有图片,把它加入list
if not haveImg:
replaceBR = re.compile('<br/>')
text = re.sub(replaceBR, "\n", item[1])
pageStories.append([item[0].strip(), text.strip(), item[2].strip(), item[4].strip()])
return pageStories
# 加载并提取页面的内容,加入到列表中
def loadPage(self):
# 如果当前未看到的页数少于2页,则加载新一页
if self.enable is 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:
# 等待用户输入
input1 = input()
# 每当输入回车一次,判断一下是否要加载新页面
self.loadPage()
# 如果输入Q则程序结束
if input1 == "Q":
self.enable = False
return
print("第%d页\t 发布人:%s\t 年龄:%s\t 赞:%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)
# 保存
def saveFile(data):
data = data.encode('utf-8')
save_path = 'J:\\Python\\Demo\\temp.out'
f_obj = open(save_path, 'wb') # wb表示打开方式
f_obj.write(data)
f_obj.close()
# 请求头值
header = {
'Connection': 'Keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
'Accept-Encoding': 'gzip,deflate',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
'Host': 'www.qiushibaike.com'
}
spider = QSBK()
strpage = spider.start()
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/taobo/python.git
git@gitee.com:taobo/python.git
taobo
python
python
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /