# 导入必备的包
# 本文爬取的是顶点小说中的完美世界为列。文中的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 单文件爬虫 断点续存 普通版 文件续存方式的更多相关文章

  1. HTML 表单 存为EXCEL文件时 中文显示乱码

    在做宣传品发放系统时,需求要把数据库查询的记录生成表单并转存excel文件. 在转存的EXCEL文件中文显示乱码,表格和其他字符正常,检查后发现是创建EXCEL文件打开模式不对 之前: myfile ...

  2. 爬虫文件存储:txt文档,json文件,csv文件

    5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1.1 TXT文本存储 将数 ...

  3. 表单多文件上传样式美化 && 支持选中文件后删除相关项

    开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...

  4. Windows操作系统单文件夹下到底能存放多少文件及单文件的最大容量

    本文是转自:http://hi.baidu.com/aqgjoypubihoqxr/item/c896921f8c2eaba5feded5f2         最近需要了解Windows中单个文件夹下 ...

  5. NPOI 2.0 教程(二):编辑既存的EXCEL文件

    NPOI 2.0 教程(二):编辑既存的EXCEL文件 分类: C#技术 2014-03-11 15:40 993人阅读 评论(3) 收藏 举报 c#excelNPOI 转载请注明出处 http:// ...

  6. 3.Git基础-查看当前文件状态、跟踪新文件、暂存文件、忽略文件、提交更新、移除文件、移动文件

    1.检查当前文件状态 --  git status  git diff  git diff --staged   git status :我们可以使用 git status 来查看文件所处的状态.当运 ...

  7. GDB 显示别的文件;在别文件打断点;执行到函数末尾;跳出当前函数

    显示别的文件:l "文件名.后缀名":行号 在别文件打断点:b "文件名.后缀名":行号 执行到函数末尾:finish 跳出当前函数(当前位置到函数的末尾不被执 ...

  8. Git 基础 - 删除暂存区的文件

    1 直接删除文件 这个文件会有两个操作:已暂存的修改.未暂存的删除 2 直接删除文件 + 记录删除操作 先在工作目录中删除文件,再使用git rm命令记录此次移除文件的操作(删除暂存区中该文件的修改快 ...

  9. eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 问题描述:eclipse打断点调试进入到class文件中,而且监视区不显示变量结果 是由于对应 ...

随机推荐

  1. HDU-6672-Seq

    题目传送门 ps:一般这种给一个数列求第n项,n还特别大的.要么矩阵快速幂,要么转化递推式.不过这题数据也特别多有100000组,所以就算矩阵快速幂可能也要超时,而且我还没推出来.转化递推式需要比较强 ...

  2. MyBatis延迟加载及缓存

    延迟加载 lazyLoadingEnabled 定义: MyBatis中的延迟加载也成为懒加载,就是在进行关联查询的时候按照设置延迟加载规则推迟对关联对象的select检索.延迟加载可以有效的减少数据 ...

  3. 吴裕雄--天生自然 python开发学习笔记:一劳永逸解决绘图出现中文乱码问题方法

    import numpy as np import matplotlib.pyplot as plt x = np.random.randint(0,20,10) y = np.random.rand ...

  4. 吴裕雄--天生自然操作系统操作笔记:window10显示隐藏文件夹

    基于安全考虑,操作系统会隐藏一些文件和文件夹,防止误删除操作.但有可能是个别人为了隐藏一些私密数据,也同样采取隐藏的方式.

  5. Nginx笔记总结二十一:隐藏或者混淆nginx返回的Server信息

    [root@localhost nginx-]# vi src/http/ngx_http_header_filter_module.c 修改:49-50行 static char ngx_http_ ...

  6. SHELL用法三(变量及参数设置)

    京峰JF2115-Day45上课笔记 1.SHELL编程变量命名规范: 变量分为:系统变量.环境变量.用户变量: 定义变量时使用=赋值,无需通过declare定义变量的类型: 变量赋值时,=前后是不能 ...

  7. application.properties和application.yml

    1.application.properties 文件和 application.yml 文件优先级: 当同时存在时,那application.yml 只是个摆设. 2.yml文件的好处,天然的树状结 ...

  8. C语言标准库 常用函数说明

    void *memset(void *str, int c, size_t n) Syntax void *memset(void *str, int c, size_t n) Description ...

  9. axios 传对象(JavaBean)到后台

    //user对象 let user = JSON.stringify({ userAccountNumber: own.userName, userPassword: own.userPassword ...

  10. java虚拟机的运行原理

    一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 javac YourClassNam ...