原标题:用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爬取笔趣阁小说相关推荐

  1. python爬取小说写入txt_对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力...

    原标题:对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力 以前挺爱在笔趣阁看小说的(老白嫖怪了) 现在学了一点爬虫技术,就自然而然的想到了爬取笔趣阁的小说 也算锻炼一下自己的技术,就以新笔 ...

  2. python爬取笔趣阁小说(附源码)

    python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...

  3. Python爬虫--笔趣阁小说爬取

    Python爬虫–笔趣阁小说爬取 爬虫用到的插件 import requests from lxml import etree 小说目录页 以小说"我有百万技能点"为例,在笔趣阁搜 ...

  4. Python爬虫之爬取笔趣阁小说下载到本地文件并且存储到数据库

    学习了python之后,接触到了爬虫,加上我又喜欢看小说,所以就做了一个爬虫的小程序,爬取笔趣阁小说. 程序中一共引入了以下几个库: import requests import mysql.conn ...

  5. Python爬虫练习(一) 爬取新笔趣阁小说(搜索+爬取)

    爬取笔趣阁小说(搜索+爬取) 首先看看最终效果(gif): 实现步骤: 1.探查网站"http://www.xbiquge.la/",看看网站的实现原理. 2.编写搜索功能(获取每 ...

  6. Python爬虫:笔趣阁小说搜索和爬取

    目录 0x00 写在前面 0x01 搜索页面 0x02 章节获取 0x03 章节内容获取 0x04 完整代码 0x00 写在前面 最近开始学习Python的爬虫,就试着写了写笔趣阁小说的爬虫,由于是初 ...

  7. 用python爬取笔趣阁小说并分章节保存到本地

    在宿舍无聊时想做点小程序,刚好又看到笔趣阁的广告,就想着爬一下小说看看,通过网上的爬取教程整理的 使用beautifulsoup解析request获取的HTML http://beautifulsou ...

  8. 爬取笔趣阁小说网站上的所有小说(二)

    爬取笔趣阁小说网站上的所有小说(二) 网址为:https://www.biqukan.cc/topallvisit/1.html 我们已经拿到了所有小说的地址爬取笔趣阁小说网站上的所有小说(一),现在 ...

  9. python3+正则(re)增量爬虫爬取笔趣阁小说( 斗罗大陆IV终极斗罗)

    python3+re 爬虫爬取笔趣阁小说 斗罗大陆IV终极斗罗 爬取前准备 导入的模块 分析 正则的贪婪与非贪婪 附完整代码示例 爬取前准备 导入的模块 import redis #redis数据库 ...

最新文章

  1. 开发者,什么是你真正关心的问题?| AI ProCon 2019
  2. 【Linux】使用xshell登陆时密码框为灰色,无法输入密码
  3. python面向什么编程_python基础-面向过程编程
  4. js实现椭圆轨迹_Canvas实现直线与圆形的物理运动效果
  5. SAStruts リンク記述におけるs:linkとhtml:linkの比較
  6. 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)
  7. storm日志bebug问题
  8. c post请求网页_Python使用urllib2抓取网页
  9. python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...
  10. js html 加背景图片,利用js实现随机背景显示,每次访问背景图都不一样
  11. [2018.11.05 T3] 零食
  12. 让摄像头脱离线的束缚:使用手机充当电脑摄像头
  13. MySQL||主键(primary key)及主键约束
  14. 如何优化你在百度搜索中的排行
  15. 拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口,拼多多API接口
  16. 作为一名大学生,为什么会直接选择IT培训?IT培训有什么好处?
  17. 【服务器】安装Linux(centos)操作系统详细步骤
  18. 怎么在谷歌地图上画图_如何在Google地图上规划具有多个目的地的公路旅行
  19. 如果大家看了我的tools专栏,里面的小工具有不少,我提炼出来给大家——汉诺塔
  20. IDEA导出项目依赖jar包

热门文章

  1. 转载-【讨论】为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能
  2. 资产配置那些事-常用理财工具1
  3. python文件练习题
  4. 浅谈web架构之架构设计(总结)
  5. c语言程序和数据是可执行,C语言学习笔记(C编程-Tan Haoqiang)
  6. En-Tan-Mo(ETM)项目周报(7.19-7.25)
  7. 游戏美术设计怎么入门?场景建模该如何学习?
  8. Java:用递归计算n!
  9. 红米note电信版_标注2014910_官方线刷包_救砖包_解账户锁
  10. 胖哥食品网络诊断分析