python3.6 单文件爬虫 断点续存 普通版 文件续存方式
# 导入必备的包
# 本文爬取的是顶点小说中的完美世界为列。文中的aa.text,bb.text为自己创建的text文件
import requests
from bs4 import BeautifulSoup # 爬取目标url url = 'https://www.x23us.com/html/42/42377/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3393.4 Safari/537.36'
} # 单独的函数,用于打开bb文件,bb文件用于存章节的url
def open_href():
with open('bb.text', 'r', encoding='utf-8') as f:
a = f.readlines()
f.close()
# 将文件里的所有url读出并以列表的形式返回
return a # 请求目标网址,并返回文本源码
def page_index():
html = requests.get(url, headers=headers)
if html:
return html.text # 将目标网址进行解析,得到所有章节的url
def page_list(html):
if html:
a = []
html_bs4 = BeautifulSoup(html, 'lxml')
html_b = html_bs4.select('.L a')
for i in html_b:
title = i.get_text()
href = url + i.get('href')
data = {
'title': title,
'href': href
}
a.append(data)
return a # 将aa文件打开并将得到的章节内容写进文件里并关闭存档
def text_cun_html(title, html):
if html:
with open('aa.text', 'a+', encoding='utf-8') as f:
f.write(title + '\n' + html + '\n')
f.close()
print('存档成功!!!!')
return 'yes'
else:
None # 将bb文件打开并将写入aa文件相对应的url写进bb文件里并关闭存档
def text_cun_href(href):
if href:
with open('bb.text', 'a+', encoding='utf-8') as f:
f.write(href + '\n')
f.close()
print('href存档成功!!')
return 'ok'
else:
None # 将得到的章节url解析并二次请求获取章节内容
def html_list_index(title, href):
if href:
html = requests.get(url=href, headers=headers)
if html.status_code == 200:
bs = BeautifulSoup(html.text, 'lxml')
bs4 = bs.select('#contents')
for item in bs4:
a = text_cun_html(title, item.get_text())
# 章节内容存档成功返回yes
if a == 'yes':
text_cun_href(href)
else:
None def main():
# 首先获取下bb文件的url列表
number = open_href()
print(number)
html = page_index()
data = page_list(html)
for i in data:
title = i.get('title')
href = i.get('href')
print(href)
# 判断发生异常后,在启动服务时,我们过滤掉已爬取过的url
if href + '\n' not in number:
html_list_index(title, href)
else:
None if __name__ == '__main__':
main() #简单思路实现断点续存,不喜勿喷,欢迎共同讨论
python3.6 单文件爬虫 断点续存 普通版 文件续存方式的更多相关文章
- HTML 表单 存为EXCEL文件时 中文显示乱码
在做宣传品发放系统时,需求要把数据库查询的记录生成表单并转存excel文件. 在转存的EXCEL文件中文显示乱码,表格和其他字符正常,检查后发现是创建EXCEL文件打开模式不对 之前: myfile ...
- 爬虫文件存储:txt文档,json文件,csv文件
5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1.1 TXT文本存储 将数 ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
- Windows操作系统单文件夹下到底能存放多少文件及单文件的最大容量
本文是转自:http://hi.baidu.com/aqgjoypubihoqxr/item/c896921f8c2eaba5feded5f2 最近需要了解Windows中单个文件夹下 ...
- NPOI 2.0 教程(二):编辑既存的EXCEL文件
NPOI 2.0 教程(二):编辑既存的EXCEL文件 分类: C#技术 2014-03-11 15:40 993人阅读 评论(3) 收藏 举报 c#excelNPOI 转载请注明出处 http:// ...
- 3.Git基础-查看当前文件状态、跟踪新文件、暂存文件、忽略文件、提交更新、移除文件、移动文件
1.检查当前文件状态 -- git status git diff git diff --staged git status :我们可以使用 git status 来查看文件所处的状态.当运 ...
- GDB 显示别的文件;在别文件打断点;执行到函数末尾;跳出当前函数
显示别的文件:l "文件名.后缀名":行号 在别文件打断点:b "文件名.后缀名":行号 执行到函数末尾:finish 跳出当前函数(当前位置到函数的末尾不被执 ...
- Git 基础 - 删除暂存区的文件
1 直接删除文件 这个文件会有两个操作:已暂存的修改.未暂存的删除 2 直接删除文件 + 记录删除操作 先在工作目录中删除文件,再使用git rm命令记录此次移除文件的操作(删除暂存区中该文件的修改快 ...
- eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 问题描述:eclipse打断点调试进入到class文件中,而且监视区不显示变量结果 是由于对应 ...
随机推荐
- 接口测试-chap3-https请求证书问题
接口地址如果是HTTPS,需要安装证书,或者在发送请求时传入参数verify=False,表示忽略 res = requests.get(url, verify=False)
- 吴裕雄--天生自然python学习笔记:Python3 SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...
- 2016年3月13日 FXStreet首席分析师:欧元/美元下周走势展望
FX168讯 欧元/美元在经历周初沉闷的走势之后,最终在欧洲央行出台一系列措施促进通货膨胀和经济增长之后怒涨至近一个月最高位.欧洲央行决议公布之前,投资者预期存款利率将下调10至15个基点,并可能进一 ...
- js弱类型转换的知识点
本文属于转载知识点,以下是原博文作者:不死鸟哇的文章,文章链接:原文JavaScript里什么情况下a==!a为true呢? 今天群里有位同学问了这样一个问题,JavaScript在什么情况下会出现变 ...
- 在Docker内安装jenkins运行和基础配置
这里是在linux环境下安装docker之后,在doucer内安装jenkins --------------------docker 安装 jenkins---------------------- ...
- AI在自动化测试领域的应用
阿里QA导读:最近一两年随着深入学习技术浪潮的诞生,智能化测试迎来了新的发展,而AI也会引领下一代测试的新航向.Testin云测CTO陈冠诚先生的分享让我们看到AI在移动自动化测试领域里面的创新机会点 ...
- 单点登录CAS系列第06节之客户端配置单点登录
原理 纯web.xml 借助Spring 注意 代码 测试 原理 这里用的是:cas-client-core-3.4.0.jar(2015-07-21发布的) 下载地址为:http://mvnrepo ...
- CSS 双飞翼布局
10 Jul 2016 » CSS 双飞翼布局:总共分三栏,左侧栏Left,中间主栏Main,右侧栏Right 第一步,建立三个div,不过注意,中间Main需要加一个wrap div. 整个结构看起 ...
- Redis(1)——5种基本数据结构
一.Redis 简介 "Redis is an open source (BSD licensed), in-memory data structure store, used as a d ...
- 给你的Kubernetes集群建一个只读账户(防止高管。。。后)
给你的Kubernetes集群建一个只读账户 需求:我们知道搭完k8s集群会创建一个默认的管理员kubernetes-admin用户该用户拥有所以权限,有一天开发或测试的同学需要登录到k8s集群了解业 ...