不识有话说

作为一个爬虫萌新,第一个小项目当然是爬一爬我们的萌新之友-《新笔趣阁》
虽然没什么难度,
不过还是分享一下自己的代码历程,
希望能给予大家一些思路或帮助,
当然,如果有大佬能够指出错误或可以改进的地方,
那当然更好了,
等你呦~

项目展示

在讲解项目之前,
先给你们展示一下功能,
不然看了半天,
结果不是自己想要的那不是自闭了。
<----------------------------------分割线------------------------------------->


说实话,感觉我挺憨的才能写出这种代码,谁下载小说不是一整本一整本下,
结果也就我傻大憨的一章一章下,甚至还觉得自己好牛,害

代码思路讲解

项目要用到的模块

import os
from time import sleep
import requests
from lxml import etree

没有的话可以自行安装,虽然大部分小伙伴应该都知道,但还是说一下

pip/pip3 install 想要安装的模块名

模块安装好了接下来讲解代码了

import os
from time import sleepimport requests
from lxml import etree# 新笔趣阁的全部小说界面链接,所有小说链接都在这里
url = 'http://www.xbiquge.la/xiaoshuodaquan/'
# 请求头
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}
# 向新笔趣阁发送get请求
all_book_r = requests.get(url, headers=headers)
# 解析返回的HTML页面数据
all_book_html = etree.HTML(all_book_r.content.decode('utf-8'))

首先进入新笔趣阁全部小说页面 >>>点击进入
点击键盘右上方的f12键或者鼠标右键点击检查进入页面调试界面(右边白色部分),
接下来单击调试台左上角的选中按钮,先随便选中一篇小说,
点击后发现左边调试台中的html界面已经跳转到了我们选中的地方,
我们可以发现这是一个ul列表下的一个a标签,并且这个ul列表储存着所有小说的链接
那这就好办了~

我们通过Chrome的xpath插件获取到新笔趣阁所有小说的链接
没有的可以自己下载安装一下(强烈推荐,特别好用)
链接: https://pan.baidu.com/s/1_HzBzOp-vaWFkiuE2U9yFQ
提取码: sb7p
xpath使用:这里是一个大佬的博客,不懂的可以看看

我们将可以正确获取到自己需要信息的代码放入到xpath方法中,
xpath方法会将获取到的HTML页面里自己需要的所有信息放入到一个列表里,
这个列表也就是你设置的变量名

# 储存所有小说链接的列表
all_book_url = all_book_html.xpath('//div[@class="novellist"]/ul/li/a/@href')
# 储存所有小说名的列表
all_book_title = all_book_html.xpath('//div[@class="novellist"]/ul/li/a/text()')
print(all_book_url) # 下图


设置num值,每循环判断一次num值就+1,直到找到该小说,那么num值将作为上图列表的下标使用,获取到用户想要下载的小说的链接,进行该小说的数据获取

# 输入你想找的小说名
find_book = input('输入想下载的书名:')
num = 0
# 通过for循环判断是否有用户想找的小说
for book_title in all_book_title:# 有则获取该小说你想要的数据if find_book == book_title:print('找到了,您要的', book_title)# 找到该小说的链接book_url = all_book_url[num]# 向小说页面发送请求book_r = requests.get(book_url, headers=headers)# 解析book_html = etree.HTML(book_r.content.decode('utf-8'))# 该小说的章节链接列表book_url = book_html.xpath('//div[@id="list"]/dl/dd/a/@href')# 该小说的章节名列表chapter_title = book_html.xpath('//div[@id="list"]/dl/dd/a/text()')# 循环一次下标加一num += 1

为了防止下载的小说都装在一个文件夹里,
不仅混乱而且很难找到自己想看的小说章节(其实只要小说内容装在一起就不用这么麻烦,但是当时我妹想到)

# 判断该路径是否存在,存在则返回true,不存在则返回flase
judge = os.path.exists('../小说/%s' % str(book_title))
# 判断judge是否为true,如果不是则创建该路径
if not judge:     os.makedirs('../小说/%s' % str(book_title))

通过用户输入的值,将需要的章节链接循环取出,然后通过xpath获取小说文本内容

# 告诉用户小说有多少章节
print('<------请输入数字(该小说共有%s章)------>' % len(chapter_title))# 获取用户需要下载的章节download_book_start = int(input('输入从第几章开始下载:'))download_book_end = int(input('输入到第几章结束:'))chapter_num = 0# download_book_start - 1是因为列表下标是从0开始的for book_content_url in book_url[download_book_start - 1:download_book_end]:# 防止获取太快get不到数据sleep(2)new_book_content_url = 'http://www.xbiquge.la' + book_content_urlbook_content_r = requests.get(new_book_content_url, headers=headers)book_content_html = etree.HTML(book_content_r.content.decode('utf-8'))# 该章节小说内容列表book_content = book_content_html.xpath('//div[@class="box_con"]/div[@id="content"]/text()')

将内容列表里的数据一个个循环出来存到all_content字符串中,
然后通过with open方法,写入到text文件里

            with open('../小说/%s/%s.text' % (str(book_title), chapter_title[download_book_start + chapter_num -1]), 'w', encoding='utf-8') as write_content:# 用来储存小说内容的字符串all_content = ''for content in book_content:all_content += contentwrite_content.write(all_content)print(chapter_title[download_book_start + chapter_num -1], '--下载成功')# 用来获取小说章节名chapter_num += 1print('全部下载完成')

emmm,大概可能也许讲完了,应该讲的挺详细的,
萌新第一次写,如果有什么不足,可以提出来(勿喷),会慢慢改进的

完整代码

import os
from time import sleepimport requests
from lxml import etreeurl = 'http://www.xbiquge.la/xiaoshuodaquan/'headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}all_book_r = requests.get(url, headers=headers)
all_book_html = etree.HTML(all_book_r.content.decode('utf-8'))
all_book_url = all_book_html.xpath('//div[@class="novellist"]/ul/li/a/@href')
all_book_title = all_book_html.xpath('//div[@class="novellist"]/ul/li/a/text()')
print(all_book_url)
find_book = input('输入想下载的书名:')
num = 0
for book_title in all_book_title:if find_book == book_title:print('找到了,您要的', book_title)book_url = all_book_url[num]book_r = requests.get(book_url, headers=headers)book_html = etree.HTML(book_r.content.decode('utf-8'))book_url = book_html.xpath('//div[@id="list"]/dl/dd/a/@href')chapter_title = book_html.xpath('//div[@id="list"]/dl/dd/a/text()')judge = os.path.exists('../小说/%s' % str(book_title))if not judge:     os.makedirs('../小说/%s' % str(book_title))print('<------请输入数字(该小说共有%s章)------>' % len(chapter_title))download_book_start = int(input('输入从第几章开始下载:'))download_book_end = int(input('输入到第几章结束:'))chapter_num = 0for book_content_url in book_url[download_book_start - 1:download_book_end]:sleep(2)new_book_content_url = 'http://www.xbiquge.la' + book_content_urlbook_content_r = requests.get(new_book_content_url, headers=headers)book_content_html = etree.HTML(book_content_r.content.decode('utf-8'))book_content = book_content_html.xpath('//div[@class="box_con"]/div[@id="content"]/text()')with open('../小说/%s/%s.text' % (str(book_title), chapter_title[download_book_start + chapter_num -1]), 'w', encoding='utf-8') as write_content:all_content = ''for content in book_content:all_content += contentwrite_content.write(all_content)print(chapter_title[download_book_start + chapter_num -1], '--下载成功')chapter_num += 1print('全部下载完成')breakelif num + 1 == len(all_book_title):print('查无此书')num += 1

`

爬虫初学(一):爬取笔趣阁小说(萌新用-详细讲解)相关推荐

  1. Python 爬虫复习之爬取笔趣阁小说网站(不用正则)

    前言 小说网站-笔趣阁:URL:https://www.qu.la/ 笔趣阁是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度.并且该网站只支持在 ...

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

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

  3. java爬虫爬取笔趣阁小说

    java爬虫爬取笔趣阁小说 package novelCrawler;import org.jsoup.Connection; import org.jsoup.HttpStatusException ...

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

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

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

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

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

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

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

    爬取笔趣阁小说网站上的所有小说(一) 网址为:https://www.biqukan.cc/topallvisit/1.html 反反爬虫 爬虫首先要做的就是看看目标网址有没有反爬虫手段,一般网站都是 ...

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

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

  9. 爬虫练习-爬取笔趣阁小说

    练习一下爬虫,将笔趣阁的小说根据需求目标再爬取下来,本文仅仅学习爬虫技术,大家还是要支持一下正版网站的 思路: Created with Raphaël 2.2.0开始输入书名查询小说是否存在跳转页面 ...

  10. 用Scrapy爬取笔趣阁小说

    今天早上无聊,去笔趣阁扒了点小说存Mongodb里存着,想着哪天做一个小说网站有点用,无奈网太差,爬了一个小时就爬了几百章,爬完全网的小说,不知道要到猴年马月去了.再说说scrapy这个爬虫框架,真是 ...

最新文章

  1. 【整理】MySQL 之 autocommit
  2. Overload重載和Override重写的区别。Overloaded的方法是否可以改变返回值的类型?
  3. 苏州大学计算机组成与结构,苏州大学计算机组成结构期末.docx
  4. 2019-0404视觉SLAM的学习第三讲01
  5. Solr5.2.1-Cloud-Zookeeper快速搭建
  6. 初入NLP领域的一些小建议
  7. 怎么做一个企业级的BI项目?三步教你迅速搭建
  8. 微观交通仿真软件分析比较
  9. 小程序容器在一体化在线政务服务平台中的应用
  10. win10电脑虚拟内存怎么设置?win10虚拟内存设置多少合适?
  11. Linux克隆后自动改uuid,解决克隆 Linux虚拟机后修改后的机器的ip、mac、uuid失败的问题...
  12. 关于RTMP推流直播摄像头最新问题解答
  13. input输入框 去掉外边框 解决方案
  14. 聚焦三航道,腾讯云重推五大数据库新品,现场很赞!
  15. 0. DRF之软件开发模式CBV源码解析
  16. 【3DFR Python】convertDepth2Normal:从深度图计算法向图
  17. 一款在线免费的甘特图,让你轻松管理项目进度
  18. 离婚时夫妻共同债务和个人债务如何区分
  19. Orphaned pod found - but volume paths are still present on disk的处理
  20. 将数组作为参数进行传递(转)

热门文章

  1. 拿什么拯救你,我的APP。(来自赚一把手赚网的吐槽)
  2. WebContent的一些理解
  3. 信息安全·——常用算法(RC4)
  4. android js 双指事件,JS实现移动端双指缩放和旋转方法_旧址_前端开发者
  5. 持之以恒,方得始终|海联捷讯的六年数字化历程
  6. H5播放m3u8格式视频(大华、萤石云、海康)
  7. Python数据攻略-Pandas数据排序方法
  8. 计算机办公软件知识考试试题,office办公软件考试题「附答案」
  9. DS二叉排序树之删除
  10. 5611BH一位数码管及SMA420354L四位数码管引脚图