爬取笔趣阁小说,并可以搜索爬取你喜欢的小说
搜索进行爬取你自己喜欢的小说
我是一个小说爱好者,喜欢看小说,这也是我学习爬虫其中的一个原因。
我喜欢看网络小说,经常需要从网上下载小说。有的还不好找,有的下载不了,如果是正在更新的小说来说,就很难下载到txt或者其他格式的小说。我就是不想花太多时间找冷门小说的下载资源,因此稍微学习了python的爬虫知识。
废话不多说,直接开始。。。。。。。。。。。。。。。
需要安装的库requests,lxml
这次爬去的是笔趣阁的资源
大概分这几步;
1:输入想爬取的小说
2:获取网页源代码
3:进行对比小说资源
4:获取每章的url
5:获取每章的内容
6:数据清洗后,循环下载保存文件中
1:输入想爬取的小说
这里也可以利用浏览器进行搜索,由于没有拼接使用,所以直接利用拼接url来进行实现。
// An highlighted blockdef loginzhihu(): # url进行拼接url = 'https://www.xxbiquge.com/'"""利用浏览器搜索"""# try:# brower = webdriver.Firefox() # 初始化一个火狐浏览器实例:driver# # dr=webdriver.Chrome() 调用谷歌浏览器# brower.implicitly_wait(8) # 设置隐式等待时间# brower.maximize_window() # 最大化浏览器# brower.get(url) # 通过get()方法,打开一个url站点## brower.find_element_by_xpath('//*[@id="keyword"]').send_keys(str(p)) # 搜索框输入胡歌# brower.find_element_by_xpath('//*[@id="wrapper"]/div[2]/div[2]/span/input').click() # 点击百度一下按钮## time.sleep(2) # 等待2秒# sousuoye = brower.current_url# print("搜索页网址:" + sousuoye)# brower.quit() #退出浏览器# sousuo(sousuoye)### except ElementNotVisibleException as e: #进行错误提示# print(e)"""利用url进行拼接"""p = input("请输入下载的小说:")Baseurl = url + "search.php?keyword=" + str(p)sousuo(Baseurl,p)
2:获取网页源代码
进行封装到一块,对每个网站进行获取网页源代码
def request_url(url): # 对每个网站的网页进行解析显示原网页s = requests.Session()html = s.get(url)html.encoding = 'utf-8'return html.text
3:进行对比小说资源
进入结果页后,由于搜索后有许多小说,所以要进行比对,,看哪一个是自己寻找的小说,如果比对成功,则直接下一步,进行下载,不然就结束本次程序。
def sousuo(url,p): # 按照小说的名字进行搜索小说html = request_url(url)htm = etree.HTML(html)url_sousuoye = htm.xpath("//div[3]/div[1]/div[2]/h3/a/@href")[0]print("搜索的小说网址:" + url_sousuoye)# fiction_name = htm.xpath("/html/body/div[3]/div/div[2]/h3/a/span/text()")[0] # 获取小说名进行对比fiction_list = htm.xpath("/html/body/div[3]/div[.]/div[2]/h3/a/span/text()") # 获取搜索后小说的列表for i in fiction_list: # 进行循环寻找小说,如果是自己寻找的小说,就进行下一步,否则结束本次程序;if(str(p) == str(i)):xiazai(url_sousuoye)else:print("没找到匹配的小说。。。。。。")break;# xiazai(url_sousuoye)
4:获取每章的url
直接用xpath进行提取
html = request_url(url)# 获取章节# caption_title_1 = re.findall(r'<a href="(/2_2634/.*?\.html)">.*?</a>', html.text)htm = etree.HTML(html)caption_title_1 = htm.xpath('//*[@id="list"]/dl/dd[.]/a/@href'
5:获取每章的内容
获取每一张的内容,循环进行提取小说
# 循环下载每一张for i in caption_title_1:caption_title_1 = 'https://www.xxbiquge.com' + i# 网页源代码r1 = request_url(caption_title_1)# 获取章节名name = re.findall(r'<meta name="keywords" content="(.*?)" />', r1)[0]print(name)
6:数据清洗后,循环下载保存文件中
进行循环下载每一张,然后再进行数据清洗,去掉一些没用的符号,然后再存储,一TXT的形式存储
# 存入TXT文件中path = r'C:\\Users\\Administrator\\Desktop\\python爬虫\\小说\\' + fiction_name_1file_name = open(path, 'a', encoding='utf-8')# 循环下载每一张for i in caption_title_1:caption_title_1 = 'https://www.xxbiquge.com' + i# 网页源代码r1 = request_url(caption_title_1)# 获取章节名name = re.findall(r'<meta name="keywords" content="(.*?)" />', r1)[0]print(name)file_name.write(name)file_name.write('\n')# 获取章节内容chapters = re.findall(r'<div id="content">(.*?)</div>', r1, re.S)[0]chapters = chapters.replace(' ', '')chapters = chapters.replace('readx();', '')chapters = chapters.replace('& lt;!--go - - & gt;', '')chapters = chapters.replace('<!--go-->', '')chapters = chapters.replace('()', '')# 转换字符串s = str(chapters)s_replace = s.replace('<br/>', "\n")while True:index_begin = s_replace.find("<")index_end = s_replace.find(">", index_begin + 1)if index_begin == -1:breaks_replace = s_replace.replace(s_replace[index_begin:index_end + 1], "")pattern = re.compile(r' ', re.I)fiction = pattern.sub(' ', s_replace)file_name.write(fiction)file_name.write('\n')file_name.close()
最后把代码贴上
import re
# import time
import requests
from lxml import etree
# from selenium.common.exceptions import ElementNotVisibleException
# from selenium import webdriver # 导入webdriver包def request_url(url): # 对每个网站的网页进行解析显示原网页s = requests.Session()html = s.get(url)html.encoding = 'utf-8'return html.text
# def huoqu_name(url): # 获取小说的名字并进行对比
#
# html = request_url(url)
# htm = etree.HTML(html)
# fiction_name = htm.xpath("/html/body/div[3]/div/div[2]/h3/a/span/text()")[0] # 获取小说名进行对比
#
# fiction_list = htm.xpath("/html/body/div[3]/div[.]/div[2]/h3/a/span/text()")
# for i in fiction_list:
# if(str(fiction_name) == str(i)):def loginzhihu(): # url进行拼接url = 'https://www.xxbiquge.com/'"""利用浏览器搜索"""# try:# brower = webdriver.Firefox() # 初始化一个火狐浏览器实例:driver# # dr=webdriver.Chrome() 调用谷歌浏览器# brower.implicitly_wait(8) # 设置隐式等待时间# brower.maximize_window() # 最大化浏览器# brower.get(url) # 通过get()方法,打开一个url站点## brower.find_element_by_xpath('//*[@id="keyword"]').send_keys(str(p)) # 搜索框输入胡歌# brower.find_element_by_xpath('//*[@id="wrapper"]/div[2]/div[2]/span/input').click() # 点击百度一下按钮## time.sleep(2) # 等待2秒# sousuoye = brower.current_url# print("搜索页网址:" + sousuoye)# brower.quit() #退出浏览器# sousuo(sousuoye)### except ElementNotVisibleException as e: #进行错误提示# print(e)"""利用url进行拼接"""p = input("请输入下载的小说:")Baseurl = url + "search.php?keyword=" + str(p)sousuo(Baseurl,p)
# huoqu_name(Baseurl)def sousuo(url,p): # 按照小说的名字进行搜索小说html = request_url(url)htm = etree.HTML(html)url_sousuoye = htm.xpath("//div[3]/div[1]/div[2]/h3/a/@href")[0]print("搜索的小说网址:" + url_sousuoye)# fiction_name = htm.xpath("/html/body/div[3]/div/div[2]/h3/a/span/text()")[0] # 获取小说名进行对比fiction_list = htm.xpath("/html/body/div[3]/div[.]/div[2]/h3/a/span/text()") # 获取搜索后小说的列表for i in fiction_list: # 进行循环寻找小说,如果是自己寻找的小说,就进行下一步,否则结束本次程序;if(str(p) == str(i)):xiazai(url_sousuoye)else:print("没找到匹配的小说。。。。。。")break;# xiazai(url_sousuoye)
def xiazai(url): # 下载每章的内容html = request_url(url)# 获取章节# caption_title_1 = re.findall(r'<a href="(/2_2634/.*?\.html)">.*?</a>', html.text)htm = etree.HTML(html)caption_title_1 = htm.xpath('//*[@id="list"]/dl/dd[.]/a/@href')# 获取小说的名字fiction_name_0 = htm.xpath('//*[@id="info"]/h1/text()')[0]fiction_name_1 = str(fiction_name_0) + '.txt'# 存入TXT文件中path = r'C:\\Users\\Administrator\\Desktop\\python爬虫\\小说\\' + fiction_name_1file_name = open(path, 'a', encoding='utf-8')# 循环下载每一张for i in caption_title_1:caption_title_1 = 'https://www.xxbiquge.com' + i# 网页源代码r1 = request_url(caption_title_1)# 获取章节名name = re.findall(r'<meta name="keywords" content="(.*?)" />', r1)[0]print(name)file_name.write(name)file_name.write('\n')# 获取章节内容chapters = re.findall(r'<div id="content">(.*?)</div>', r1, re.S)[0]chapters = chapters.replace(' ', '')chapters = chapters.replace('readx();', '')chapters = chapters.replace('& lt;!--go - - & gt;', '')chapters = chapters.replace('<!--go-->', '')chapters = chapters.replace('()', '')# 转换字符串s = str(chapters)s_replace = s.replace('<br/>', "\n")while True:index_begin = s_replace.find("<")index_end = s_replace.find(">", index_begin + 1)if index_begin == -1:breaks_replace = s_replace.replace(s_replace[index_begin:index_end + 1], "")pattern = re.compile(r' ', re.I)fiction = pattern.sub(' ', s_replace)file_name.write(fiction)file_name.write('\n')file_name.close()if __name__ == '__main__':loginzhihu() # 进行调用小说方法进行爬取
这就结束了,,,在里面也可以设置爬取每章的时间控制 time ,这次没写,可以自己添上,希望对大家有帮助。
爬取笔趣阁小说,并可以搜索爬取你喜欢的小说相关推荐
- python爬取小说写入txt_Python BeautifulSoup 爬取笔趣阁所有的小说
这是一个练习作品.用python脚本爬取笔趣阁上面的免费小说. 环境:python3 类库:BeautifulSoup 数据源:http://www.biqukan.cc 原理就是伪装正常http请求 ...
- python爬取笔趣阁小说(附源码)
python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...
- 2021年scrapy一分钟内爬取笔趣阁整本小说存为txt|解决章节排序问题
本人是一个小说迷,喜欢用电纸书看小说,但苦于难以寻找网络小说的txt版本,加之最近学习了一下怎么用scrapy爬取网页数据,所以想到去使用scrapy框架来爬取笔趣阁小说存为txt文件,在爬取过程中对 ...
- 爬取笔趣阁小说网站上的所有小说(二)
爬取笔趣阁小说网站上的所有小说(二) 网址为:https://www.biqukan.cc/topallvisit/1.html 我们已经拿到了所有小说的地址爬取笔趣阁小说网站上的所有小说(一),现在 ...
- python3+正则(re)增量爬虫爬取笔趣阁小说( 斗罗大陆IV终极斗罗)
python3+re 爬虫爬取笔趣阁小说 斗罗大陆IV终极斗罗 爬取前准备 导入的模块 分析 正则的贪婪与非贪婪 附完整代码示例 爬取前准备 导入的模块 import redis #redis数据库 ...
- python爬取小说爬取_用python爬取笔趣阁小说
原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...
- java爬虫爬取笔趣阁小说
java爬虫爬取笔趣阁小说 package novelCrawler;import org.jsoup.Connection; import org.jsoup.HttpStatusException ...
- Python爬虫之爬取笔趣阁小说下载到本地文件并且存储到数据库
学习了python之后,接触到了爬虫,加上我又喜欢看小说,所以就做了一个爬虫的小程序,爬取笔趣阁小说. 程序中一共引入了以下几个库: import requests import mysql.conn ...
- 爬取笔趣阁小说网站上的所有小说(一)
爬取笔趣阁小说网站上的所有小说(一) 网址为:https://www.biqukan.cc/topallvisit/1.html 反反爬虫 爬虫首先要做的就是看看目标网址有没有反爬虫手段,一般网站都是 ...
- python爬取最新说章节_练习_Python3 爬取笔趣阁最新小说章节
警告:本文代码仅供学习,禁止违法使用或商用. 这里拿人气小说<黎明之剑>来举个栗子,喜欢小说<黎明之剑>的朋友们请支持正版阅读. 笔趣阁网站上的其他书籍基本上的都可以套用,其他 ...
最新文章
- buildroot管理uboot+kernel+rootfs
- 计算机教研活动心得体会,信息技术研修教研活动总结
- PAT (Advanced Level) 1007 Maximum Subsequence Sum(最大连续子段和)
- 确认要从桌面删除计算机,确定要从界面上删除 我的电脑 ...
- openssh常用命令记录
- Inf and NaN cannot be JSON encoded
- 基于体素的全局光照技术
- java舆情分析_基于Java实现网络舆情分析系统的研究与实现
- 深度好文 | 超全SLAM技术及应用介绍
- 缝隙天线简介[搬运]
- Android程序设计基础 • 【目录】
- 基础工具类Joiner的使用
- 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)
- 四、转换成BCNF的保持无损连接的分解
- 根据结构体数组中某一数据项对结构体数组排序
- MFC中添加GIF图片
- Python做数据处理(二):贷款风险预测
- 四十六、基础框架(四)字符串物件
- java edt,java并发之EDT测试
- 智慧发电厂+智能发电厂web端平台管理系统+Axure高保真智慧电厂系统+能耗管理+告警管理+生产监控+安防设备管理+运维设备管理+监控面板+系统管理+智慧电厂+电厂系统+智慧电厂管理平台+rp原型
热门文章
- 【编译原理】-- 第一章(翻译程序、编译程序、汇编程序、解释程序、编译过程概述)
- SAP 采购发票校验之 后续贷记 MIRO <转载>
- 西南大学校园网客户端共享网络之路由器开wifi
- 有没有更好的RFID固定资产管理系统?有RFID资产管理解决方案-新导智能
- 树莓派4b+mcp2515实现CAN总线通讯和系统编程(一.配置树莓派CAN总线接口)
- 树莓派安装ubuntu18.04教程
- (史上最全)Abaqus和XFLOW流固耦合联合仿真
- 标准G726音频解码和与H264视频封装为avi
- c语言如何读取avi文件,avilib库的使用
- 6 仓储管理系统 门店端功能