【每周一爬】爬取盗版小说网的小说
一:准备工作
import requests
from bs4 import BeautifulSoup
url = "https://b.faloo.com/p/163306/1.html"
r = requests.get(url)
print(r.text)
二:爬取单个章节
import requests
from bs4 import BeautifulSoup
url = "https://b.faloo.com/p/163306/1.html"
try:r = requests.get(url) #解析网页r.raise_for_status #检查网页能否正常访问,不能则报错html = r.text #获取网页htmlsoup = BeautifulSoup(html,'html.parser') #用html.parser解析器解析htmldiv = soup.find_all("div",id = "content")[0] #查找名为div,id属性为content的标签,由于返回的是一个列表,因此取列表里的值print(div)
except:print("出错了")
import requests
from bs4 import BeautifulSoup
url = "https://b.faloo.com/p/163306/1.html"
try:r = requests.get(url) #解析网页r.raise_for_status #检查网页能否正常访问,不能则报错html = r.text #获取网页htmlsoup = BeautifulSoup(html,'html.parser') #用html.parser解析器解析htmldiv = soup.find_all("div",id = "content")[0]div = div.text.replace(' ','\n\n'+' ')print(div)
except:print("出错了")
三:将整本书爬下并将文本存入一个txt文档中
import os
if not os.path.exists("D://1.txt"):f = open('D://1.txt','w')f.write('这是写入的内容')f.close()
else:print("已存在相同文件名")
上述代码第一次执行结果如下:
我们打开第一章,看一下url。
我们发现,href前面加上一个“http:”正好就是我们想要章节的url!
那么我们就得到了获取章节链接的方法——通过获取<a>标签中的href
import requests
import os
from bs4 import BeautifulSoupmain_url = "https://b.faloo.com/f/163306.html" #指定带有章节链接的url
chapter_names=[] #用于存放章节名
url_list = [] #用于存放章节链接
path = "D://与同居的大盗.txt" #指定一个根目录存放txt文件
num = 0'''定义一个获取章节链接的函数
这个函数的作用是从main_url中提取出所有章节的链接
并且放到url_list中去,最后返回url_list
以供下一个函数使用
'''def getUrl(url):try:r = requests.get(url)r.raise_for_statusexcept:print("无法获取主网页,请确认主网页")html = r.textsoup = BeautifulSoup(html,'html.parser')td = soup.find_all('td',class_ = "td_0")for each in td:url_ = 'http:' + each.a.attrs['href']url_list.append(url_)return url_list'''定义一个获取章节文本的函数
这个函数的作用是将每一章的文本内容提取出来并放到txt文件中去
'''
def getContent(list,path): if not os.path.exists(path):with open(path,'a',encoding = 'utf-8') as f: #这里将open()放在for循环之外是为了提高效率,避免重复地打开文件。并将编码方法改为utf-8,使其能识别特殊字符。如果不加这个encoding会报编码错误,因为windows系统默认的gbk编码方式识别不了文中的特殊字符。for url in list:try:r1 = requests.get(url) #解析网页 #检查网页能否正常访问,不能则报错r1.raise_for_statusexcept:print("此"+item+"章节链接无法打开,请确认网页")html1 = r1.text #获取网页htmlsoup1 = BeautifulSoup(html1,'html.parser') #用html.parser解析器解析htmldiv = soup1.find_all("div",id = "content")[0]content = div.text.replace(' ','\n\n'+' ')f.write(content)f.closeelse:print('"D://"位置已存在"与校花同居的大盗.txt",请确认')getContent(getUrl(main_url),path)#调用函数
好了,至此,我们就完成了爬取一本书的工作。
但是,我们的代码还有很多要优化的地方,比如:
· 没有章节名
· 没有程序运行进度的提示。我们这次爬取的书比较小,如果是一本内容特别多地小说,python爬取所需要的时间会大大增加,没有进度提示的话会影响到用户的使用体验
那么,这些就是我们下一次要来完善的地方。
【未完待续】
四:优化
【每周一爬】爬取盗版小说网的小说相关推荐
- 爬虫起点小说网所有小说基本信息
爬虫起点小说网所有小说基本信息 第一篇博客,先试试水.爬虫你们懂的,三小时5万条数据: 多线程 失败再爬取机制 多次失败链接储存再爬取 自定义数据量 代码块 导入需要的包 # -*- coding: ...
- 爬取飞卢小说网的小说
爬取飞卢小说网的任意小说 需要的库就三个 import requests import re import os 飞卢小说网的url关系很简单,主要的小说内容就是原来小说界面后面加了一个_1 爬虫函数 ...
- 爬取17k小说网的小说
最近在学习python爬虫,所以写了一个17K小说网爬取的脚本来做练习,分享一下 1.爬取的网页为http://all.17k.com/lib/book.html 小说分类页面的免费区的小说,付费vi ...
- 爬取听书网有声小说音频数据
前言: 朋友最近迷上了听有声小说,可是因为很多的有声小说网站都需要vip才能听,所以他想让我帮他把小说弄下来,方便他可以随时在手机上听.我在网上搜了一下他听的这部小说,的确有很多大的听书网站都需要vi ...
- 网络爬虫-爬取顶点小说网指定小说
需求是女朋友下发的(凌晨12:30): 帮我下载一部小说–医后倾仙(1979章-最新章节) 打开电脑–打开百度–输入医后倾仙–打开我见到的第一个小说网站(顶点小说网)–敲代码 import reque ...
- 爬取起点小说网免费小说
python 3.7 设置了0.5秒存入一个章节 所以有点慢 运行的时候在py文件的同级目录下创建目标的小说文件夹 在文件夹中写入小说章节 headers完全没有引用= =(主要是起点没有怎么反爬取) ...
- Python爬虫实战 | 抓取小说网完结小说斗罗大陆
储备知识应有:Python语言程序设计 Python网络爬虫与信息提取 两门课程都是中国大学MOOC的精彩课程,特别推荐初学者.环境Python3 本文整体思路是:1.获取小说目录页面,解析目录页面, ...
- 太空战机c语言程序,第18章 18- 太空战机-科幻小说之无尽展开-扶轮小说网手机小说...
前往宇宙军基地的路上并没有招到任何阻碍,仿佛之前启动斯库尔德号时的漫天炮火并没有实际存在过一样.一笔阁 m.yibige.com在经过简单的通讯后,便顺利的获得了对接与进入基地的许可. 与第一次来到宇 ...
- 诸天最强穿越位面系统鸿蒙决,第304章 假册-笑踏疯巅-扶轮小说网手机小说
"规定?那是什么?"赵立寒问道. 白良还没回答守门人的攻击就到了,见此情形白良便道:"现在已经躲不开了,你能承受攻击而不会再迷失吗?只要可以听到我说话就行." ...
- Scrapy爬虫框架,爬取小说网的所有小说
Scrapy入门教程请看 目录 1.思路清理 2.创建爬虫项目 3. 爬虫架构构思 4.爬虫程序具体分析 5.效果展示 6.待优化的地方 1.思路清理 我们的目的是把某个小说网的所有小说给拿下,这就涉 ...
最新文章
- 自动禁止ssh的root登陆
- Spring揭秘--寻找遗失的web.xml
- java实现单词替换_java – 正则表达式将空格和单词替换为单词的toFirstUpper
- 1086 就不告诉你
- 跳出内层循环 使用 for of 代替 map
- 局域网内连接MySQL
- 全面认识UML-类图元素(java)
- Shiro(二)通过shiro实现登录 连接数据库+集成Springboot
- HDU4474_Yet Another Multiple Problem
- FreeRTOS的内存管理
- 全国主要城市不同日照标准的间距系数
- 富文本支持粘贴excel表格_Anki插件-OneNote importer(富文本批量导入)
- python 开关_Python开关盒
- 对变量移位顺序读写_Java多线程并发读写锁ReadWriteLock实现原理剖析
- wap ios android,iOS/Android/WAP 全兼容专题页面制作方法(一)
- SAP中与物料BOM有关的表关联
- FC SAN、IP SAN、IB SAN
- python数据分析——网络流量的一些特性
- Dubbo官网实战使用技巧
- 一个应届毕业生的求职回忆录(指引道路)