python爬取小说爬取_用python爬取笔趣阁小说
原标题:用python爬取笔趣阁小说
首先打开笔趣阁网址,链接,搜索自己想要的小说。
在网站内单击右键,点击检查,会出现如下界面!
我们需要的章节信息就在我划的这块,
可以将每个标签点一下,它对应的内容就会在网站里高亮。如图,我现在点到了第一章的章节信息,它里面包含了,每一章的链接与名称。
现在我们就可以用xpath来从这标签中获得每一章的链接和名称。
import requests,os
from lxml import html#调用lxml模块和requests模块
url = 'http://www.xbiquge.la/7/7004/'
首先咱们调用模块然后解析这个网页
hl = requests.get(url) # 获取源码
hl = hl.content.decode("utf-8")
先将书名找到保存起来,
可以看到书名是在这个地方,我们可以写代码来获取它
selector = html.fromstring(hl)
list = selector.xpath('//div[@id = "info"]/h1/text()')
name_book = list[0]
htmls_list = []#创建一个空列表来存储所有章节链接
selector = html.fromstring(hl)
html_list = selector.xpath('//div[@id = "list"]/dl/dd/a/@href')#获得链接列表
#将链接与网页网址连接,形成每一章的网址
for i in html_list:
htmls_list.append(url + i)
name_list = selector.xpath('//div[@id = "list"]/dl/dd/a/text()')
打印这两个列表,得到结果如下
我只截取了一部分,可以看到两个列表,分别是章节链接和章节名称。
然后我们就可以通过章节链接到每一章里去获得内容。
通过遍历获取每个章节的链接,然后进入,我们需要在浏览器进入某个章节,找出章节内容的规律。如图
可以看到内容是在
id = "content"下,
所以我们可以写代码来获取这章的内容,这里的函数url传的是我们在上面取的章节链接,我们可以取一个链接来看看
import requests,os
import lxml,html
url = 'http://www.xbiquge.la/7/7004/3246381.html'
txt = ''
hl = requests.get(url) # 获取源码
hl = hl.content.decode("utf-8")
selector = html.fromstring(hl)
txt_list = selector.xpath('//div[@id = "content"]/text()')
for i in txt_list:
i = repr(i).replace(r'\r','').replace(r'\xa0','').replace("'",'')#这里将文章中多余的转义字符删掉,repr函数让字符串中的转义字符不起作用。类似于r
txt += i#将列表中的字符串粘贴在一起,就是我们的文章内容
print(txt)
上面代码的url我直接在浏览器上取了网址,但其实它已经存在于我们的列表中了。打印结果如下
可以看到我们获得了第一章的内容,这就是我们想要的小说内容。现在我们书名,每章链接,章名都有了,接下来就是存储了
存储代码如下
def creat(name_book,chapter,txt):
os.makedirs(name_book,exist_ok=True)
with open(name_book + r'/'+ chapter+'.txt',"w",encoding= "utf-8") as f:
f.write(txt)
我在这里定义了一个函数来存储数据。三个参数分别是书名,章名,还有小说内容。
我们将上面内容全部封装为函数,因为经常要将网址转换为源码,所以我先写转换函数
def zhuanhuan(url):
hl = requests.get(url) # 获取源码
hl = hl.content.decode("utf-8") # 源码变为字符串
return hl
请原谅我英语不太好,用拼音代替
然后就是获取书名的函数
def nbook(url):
hl = zhuanhuan(url)
selector = html.fromstring(hl)
list = selector.xpath('//div[@id = "info"]/h1/text()')
name_book = list[0]
return name_book
获取章节链接和章名
def list_fun(hl,url):
htmls_list = []#创建一个空列表来存储所有章节链接
selector = html.fromstring(hl)
html_list = selector.xpath('//div[@id = "list"]/dl/dd/a/@href')#获得链接列表
#将链接与网页网址连接,形成每一章的网址
for i in html_list:
htmls_list.append(url + i)
name_list = selector.xpath('//div[@id = "list"]/dl/dd/a/text()')
return htmls_list,name_list
获取章节内容
def article(url):
txt= ''
hl = zhuanhuan(url)
selector = html.fromstring(hl)
txt_list = selector.xpath('//div[@id = "content"]/text()')
for i in txt_list:
i = repr(i).replace(r'\r','').replace(r'\xa0','')
txt += i
最后再在一个主函数里将列表遍历,获得每一章的内容存储在本地
def main(url):
hl = zhuanhuan(url)
y = list_fun(hl,url)#接出两个列表
name_book = nbook(url)#书名
for i,j in zip(y[0],y[1]):
txt = article(i)#章节内容
name = j.replace("?",'').replace('*','').replace('/','')#章节名称
creat(name_book,name,txt)
章节名称里替换那些符号是因为windows系统里文件命名是不能有\ / : * ? " < > |
这九个符号的,这个问题曾经也困扰了我好几天,导致我每次爬到某一章就停下来,后来才知道是命名规则的问题,其实可以将这九个符号放在列表中,检查每个章名,然后替换。我这里是直接替换的
所以总的代码就如下图
import requests,os
from lxml import html,etree
#转换网址为源代码
def zhuanhuan(url):
hl = requests.get(url)
hl = hl.content.decode("utf-8")
return hl
#存储网址列表和名称列表(每一章)
def list_fun(hl,url):
htmls_list = []#创建一个空列表来存储所有章节链接
selector = html.fromstring(hl)
html_list = selector.xpath('//div[@id = "list"]/dl/dd/a/@href')#获得链接列表
#将链接与网页网址连接,形成每一章的网址
for i in html_list:
htmls_list.append(url + i)
name_list = selector.xpath('//div[@id = "list"]/dl/dd/a/text()')
return htmls_list,name_list
#获得章节内容
def article(url):
txt= ''
hl = zhuanhuan(url)
selector = html.fromstring(hl)
txt_list = selector.xpath('//div[@id = "content"]/text()')
for i in txt_list:
i = repr(i).replace(r'\r','').replace(r'\xa0','')
txt += i
return txt
#获取书名
def nbook(url):
hl = zhuanhuan(url)
selector = html.fromstring(hl)
list = selector.xpath('//div[@id = "info"]/h1/text()')
name_book = list[0]
return name_book
#创建文件
def creat(name_book,chapter,txt):
os.makedirs(name_book,exist_ok=True)#检查是否有这个文件夹存在,如果没有,则创建
with open(name_book + r'/'+ chapter+'.txt',"w",encoding= "utf-8") as f:
f.write(txt)
def main(url):
hl = zhuanhuan(url)
y = list_fun(hl,url)
name_book = nbook(url)
for i,j in zip(y[0],y[1]):
txt = article(i)
name = j.replace("?",'').replace('*','').replace('/','')
creat(name_book,name,txt)
if __name__ == "__main__":
url ='http://www.xbiquge.la/7/7004/'
main(url)
print("爬取完成!")
看我爬取到的内容,虽然速度有点慢
责任编辑:
python爬取小说爬取_用python爬取笔趣阁小说相关推荐
- python爬取小说写入txt_对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力...
原标题:对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力 以前挺爱在笔趣阁看小说的(老白嫖怪了) 现在学了一点爬虫技术,就自然而然的想到了爬取笔趣阁的小说 也算锻炼一下自己的技术,就以新笔 ...
- python爬取笔趣阁小说(附源码)
python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...
- Python爬虫--笔趣阁小说爬取
Python爬虫–笔趣阁小说爬取 爬虫用到的插件 import requests from lxml import etree 小说目录页 以小说"我有百万技能点"为例,在笔趣阁搜 ...
- Python爬虫之爬取笔趣阁小说下载到本地文件并且存储到数据库
学习了python之后,接触到了爬虫,加上我又喜欢看小说,所以就做了一个爬虫的小程序,爬取笔趣阁小说. 程序中一共引入了以下几个库: import requests import mysql.conn ...
- Python爬虫练习(一) 爬取新笔趣阁小说(搜索+爬取)
爬取笔趣阁小说(搜索+爬取) 首先看看最终效果(gif): 实现步骤: 1.探查网站"http://www.xbiquge.la/",看看网站的实现原理. 2.编写搜索功能(获取每 ...
- Python爬虫:笔趣阁小说搜索和爬取
目录 0x00 写在前面 0x01 搜索页面 0x02 章节获取 0x03 章节内容获取 0x04 完整代码 0x00 写在前面 最近开始学习Python的爬虫,就试着写了写笔趣阁小说的爬虫,由于是初 ...
- 用python爬取笔趣阁小说并分章节保存到本地
在宿舍无聊时想做点小程序,刚好又看到笔趣阁的广告,就想着爬一下小说看看,通过网上的爬取教程整理的 使用beautifulsoup解析request获取的HTML http://beautifulsou ...
- 爬取笔趣阁小说网站上的所有小说(二)
爬取笔趣阁小说网站上的所有小说(二) 网址为:https://www.biqukan.cc/topallvisit/1.html 我们已经拿到了所有小说的地址爬取笔趣阁小说网站上的所有小说(一),现在 ...
- python3+正则(re)增量爬虫爬取笔趣阁小说( 斗罗大陆IV终极斗罗)
python3+re 爬虫爬取笔趣阁小说 斗罗大陆IV终极斗罗 爬取前准备 导入的模块 分析 正则的贪婪与非贪婪 附完整代码示例 爬取前准备 导入的模块 import redis #redis数据库 ...
最新文章
- 开发者,什么是你真正关心的问题?| AI ProCon 2019
- 【Linux】使用xshell登陆时密码框为灰色,无法输入密码
- python面向什么编程_python基础-面向过程编程
- js实现椭圆轨迹_Canvas实现直线与圆形的物理运动效果
- SAStruts リンク記述におけるs:linkとhtml:linkの比較
- 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)
- storm日志bebug问题
- c post请求网页_Python使用urllib2抓取网页
- python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...
- js html 加背景图片,利用js实现随机背景显示,每次访问背景图都不一样
- [2018.11.05 T3] 零食
- 让摄像头脱离线的束缚:使用手机充当电脑摄像头
- MySQL||主键(primary key)及主键约束
- 如何优化你在百度搜索中的排行
- 拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口,拼多多API接口
- 作为一名大学生,为什么会直接选择IT培训?IT培训有什么好处?
- 【服务器】安装Linux(centos)操作系统详细步骤
- 怎么在谷歌地图上画图_如何在Google地图上规划具有多个目的地的公路旅行
- 如果大家看了我的tools专栏,里面的小工具有不少,我提炼出来给大家——汉诺塔
- IDEA导出项目依赖jar包
热门文章
- 转载-【讨论】为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能
- 资产配置那些事-常用理财工具1
- python文件练习题
- 浅谈web架构之架构设计(总结)
- c语言程序和数据是可执行,C语言学习笔记(C编程-Tan Haoqiang)
- En-Tan-Mo(ETM)项目周报(7.19-7.25)
- 游戏美术设计怎么入门?场景建模该如何学习?
- Java:用递归计算n!
- 红米note电信版_标注2014910_官方线刷包_救砖包_解账户锁
- 胖哥食品网络诊断分析