原标题:对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力

以前挺爱在笔趣阁看小说的(老白嫖怪了)

现在学了一点爬虫技术,就自然而然的想到了爬取笔趣阁的小说

也算锻炼一下自己的技术,就以新笔趣阁开始

分析

对每一个小说目录界面的url还是很容易得到的

如圣墟:http://www.xbiquge.la/13/13959/可以知道,遍历从1到13,从00001到13959,也可以访问到部分书的目录界面,但这还是很浪费时间和麻烦

我呢就以下载一本小说为例:

为了有一定的广泛性,我用selenium先进行操作,

然后在这里输入小说名字,点击搜索,然后获得新页面的源码

再用xpath解析,找到搜到第一个小说的名字和url

再对url进行requests.get请求得到小说目录页码的源码

再进行解析,得到每一章的url以及名字

把每一章的url和名字以字典的方法存到一个列表里面

再逐步请求每个url,再解析源码,得到文字保存到电脑里面

代码实现

import os

import time

import requests

from selenium import webdriver

from concurrent.futures import ThreadPoolExecutor

from lxml import etree

#selenium路径

path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'

head={

"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"

}

novel_name=input("输入想要下载的小说名字")

#进行自动化操作对笔趣阁进行访问

bro=webdriver.Chrome(executable_path=path)

bro.get('http://www.xbiquge.la/')

search_off=bro.find_element_by_id('wd')

search_off.send_keys(novel_name)#输入小说名字

click_search=bro.find_element_by_id('sss')#找到搜索的位置

click_search.click()#点击搜索

time.sleep(5)

page_text=bro.page_source

bro.quit()

#得到访问页面的源码

tree=etree.HTML(page_text)

novel_name=tree.xpath('//*[@id="checkform"]/table/tbody/tr[2]/td[1]/a/text()')[0]#小说名

url=tree.xpath('//*[@id="checkform"]/table/tbody/tr[2]/td[1]/a/@href')[0]

#访问小说目录页面

response=requests.get(url=url,headers=head)

#因为会存在中文乱码的情况,所以进行下面操作

response.raise_for_status()

response.encoding=response.apparent_encoding

#再进行xpath解析

tree=response.text

tree=etree.HTML(tree)

actor=tree.xpath('//*[@id="info"]/p[1]/text()')[0]#作者名

#创建文件夹

if not os.path.exists('./小说'):

os.mkdir('./小说')

if not os.path.exists('./小说/'+str(novel_name)):

os.mkdir('./小说/'+str(novel_name))

urls=[]

zhangjies=tree.xpath('//*[@id="list"]/dl/dd')#获得存放章节信息的列表

for i in zhangjies:

#把每个章节的url和名字以字典型存放

zhangjie_name=i.xpath('./a/text()')[0]+'.txt'

zhangjie_url='http://www.xbiquge.la'+i.xpath('./a/@href')[0]

dic={

'name':zhangjie_name,

'url' :zhangjie_url

}

urls.append(dic)

def data_get_write(dic):

url=dic['url']

for i in range(20):#因为网站容易崩而出现503页面,故要多次请求

try:

data_get=requests.get(url=url,headers=head)

data_get.raise_for_status()

data_get.encoding=data_get.apparent_encoding

data_tree=data_get.text

break

except:

print("请求出错,从新请求")

data_tree=etree.HTML(data_tree)

data_writr=data_tree.xpath('//*[@id="content"]/text()')

with open('./小说/'+str(novel_name)+'/'+dic['name'],'w',encoding='utf-8') as fp:#对小说章节进行持久化存储

for name in data_writr:

fp.write(name)

print(dic['name'],'下载成功!!!')

#time.sleep(1)

#with ThreadPoolExecutor() as pool:#用进程池访问,因为网站容易崩,所以效率很低

#pool.map(data_get_write,urls)

for dic in urls:#对每个章节单独访问

data_get_write(dic)

time.sleep(1)

到此,算是完成了,中间也有很多问题,比如这个网页太容易崩了,一不小心就503,也可能是因为没有反爬虫的机制,服务器顶不住了,在此要感谢郭大佬的帮助,用多次循环try来解决了这个问题

也能很好的保存下来。

感觉还是很需要多练习,熟能生巧,出现问题也就能很快解决,当然算法也很重要的,能够培养思维,会练习的返回搜狐,查看更多

责任编辑:

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

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

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

  2. 【爬虫】对新笔趣阁小说进行爬取,保存和下载

    以前挺爱在笔趣阁看小说的(老白嫖怪了) 现在学了一点爬虫技术,就自然而然的想到了爬取笔趣阁的小说 也算锻炼一下自己的技术,就以新笔趣阁开始 分析 对每一个小说目录界面的url还是很容易得到的 如圣墟: ...

  3. Python爬虫笔记(1)--对新笔趣阁进行爬取

    前期准备: (1) 安装 requests(获取整个网页的HTML信息) 在cmd中,使用如下指令安装requests: pip install requests (2)安装 beautifulsou ...

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

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

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

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

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

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

  7. python爬取小说爬取_用python爬取笔趣阁小说

    原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...

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

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

  9. 爬虫初学(一):爬取笔趣阁小说(萌新用-详细讲解)

    不识有话说 作为一个爬虫萌新,第一个小项目当然是爬一爬我们的萌新之友-<新笔趣阁> 虽然没什么难度, 不过还是分享一下自己的代码历程, 希望能给予大家一些思路或帮助, 当然,如果有大佬能够 ...

最新文章

  1. 按覆盖地理范围的不同计算机网络可分为,按网络覆盖的地理范围进行分类,计算机网络可以分为:...
  2. [k8s]elk架构设计-k8s集群里搭建
  3. luogu P3241 [HNOI2015]开店
  4. idea会不定时闪屏_显示器闪屏什么原因
  5. sqlMapConfig.xml配置文件详解
  6. FairyGUI1:FairyGUI 编辑器
  7. 并行算法:如何利用并行处理提高算法的执行效率?
  8. python如何表示正整数_python中正整数
  9. 【软件篇】~ 为什么打开谷歌浏览器就是360导航页面呢?
  10. 如何在CTEX上对论文进行排版
  11. MATLAB线性回归实例 平炉炼钢
  12. to_csv ()出现中文乱码
  13. 输入阻抗 输出阻抗
  14. 【C语言】指针终结者-初阶
  15. python依据出生日期判断星座(少量代码)
  16. Hastelloy C-276 (UNS N10276) 含钨的镍-铬-钼合金
  17. Python-(生成由0到9组成的n位数字)
  18. 手把手教你使用HarmonyOS本地模拟器
  19. Redis--变慢原因及排查方法
  20. 同个一个工作簿下多个工作表相同格式

热门文章

  1. 创建采购申请---BAPI_REQUISITION_CREATE
  2. ALV分类合计功能实现
  3. ABAP 用户选择屏幕 搜索帮助 实现代码
  4. ABAP:List中回写CheckBox的值到内表
  5. ABAP:判断是否汉字
  6. 爱优腾芒“跑马圈地”,AI广告营销能拯救“盈利难”的视频平台吗?
  7. 服务器操作系统2008安装图解,IBM服务器windows2008操作系统安装步骤图文(13页)-原创力文档...
  8. numpy 图片填充_numpy/python中的洪水填充分割图像
  9. 二进制转16进制转文本[BJDCTF 2nd]cat_flag
  10. linux 拆分文件 多个,linux把一个文件拆分