Python爬虫入门教程02之笔趣阁小说爬取


Posted in Python onJanuary 24, 2021

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

前文

01、python爬虫入门教程01:豆瓣Top电影爬取

基本开发环境

  • Python 3.6
  • Pycharm

相关模块的使用

  • request
  • sparsel

安装Python并添加到环境变量,pip安装需要的相关模块即可。

Python爬虫入门教程02之笔趣阁小说爬取

单章爬取

Python爬虫入门教程02之笔趣阁小说爬取

一、明确需求

爬取小说内容保存到本地

  • 小说名字
  • 小说章节名字
  • 小说内容
# 第一章小说url地址
url = 'http://www.biquges.com/52_52642/25585323.html'
url = 'http://www.biquges.com/52_52642/25585323.html'
headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response.text)

Python爬虫入门教程02之笔趣阁小说爬取

请求网页返回的数据中出现了乱码,这就需要我们转码了。

加一行代码自动转码。

response.encoding = response.apparent_encoding

Python爬虫入门教程02之笔趣阁小说爬取

三、解析数据

Python爬虫入门教程02之笔趣阁小说爬取

根据css选择器可以直接提取小说标题以及小说内容。

def get_one_novel(html_url):
 # 调用请求网页数据函数
 response = get_response(html_url)
 # 转行成selector解析对象
 selector = parsel.Selector(response.text)
 # 获取小说标题
 title = selector.css('.bookname h1::text').get()
 # 获取小说内容 返回的是list
 content_list = selector.css('#content::text').getall()
 # ''.join(列表) 把列表转换成字符串
 content_str = ''.join(content_list)
 print(title, content_str)

if __name__ == '__main__':
 url = 'http://www.biquges.com/52_52642/25585323.html'
 get_one_novel(url)

Python爬虫入门教程02之笔趣阁小说爬取

四、保存数据(数据持久化)

使用常用的保存方式: with open

def save(title, content):
 """
 保存小说
 :param title: 小说章节标题
 :param content: 小说内容
 :return: 
 """
 # 路径
 filename = f'{title}\\'
 # os 内置模块,自动创建文件夹
 if os.makedirs(filename):
 os.mkdir()
 # 一定要记得加后缀 .txt mode 保存方式 a 是追加保存 encoding 保存编码
 with open(filename + title + '.txt', mode='a', encoding='utf-8') as f:
 # 写入标题
 f.write(title)
 # 换行
 f.write('\n')
 # 写入小说内容
 f.write(content)

Python爬虫入门教程02之笔趣阁小说爬取
Python爬虫入门教程02之笔趣阁小说爬取

保存一章小说,就这样写完了,如果想要保存整本小说呢?

整本小说爬虫

既然爬取单章小说知道怎么爬取了,那么只需要获取小说所有单章小说的url地址,就可以爬取全部小说内容了。

Python爬虫入门教程02之笔趣阁小说爬取

所有的单章的url地址都在 dd 标签当中,但是这个url地址是不完整的,所以爬取下来的时候,要拼接url地址。

def get_all_url(html_url):
 # 调用请求网页数据函数
 response = get_response(html_url)
 # 转行成selector解析对象
 selector = parsel.Selector(response.text)
 # 所有的url地址都在 a 标签里面的 href 属性中 
 dds = selector.css('#list dd a::attr(href)').getall()
 for dd in dds:
 novel_url = 'http://www.biquges.com' + dd
 print(novel_url)


if __name__ == '__main__':
 url = 'http://www.biquges.com/52_52642/index.html'
 get_all_url(url)

Python爬虫入门教程02之笔趣阁小说爬取

这样就获取了所有的小说章节url地址了。

爬取全本完整代码

import requests
import parsel
from tqdm import tqdm


def get_response(html_url):
 headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
 }
 response = requests.get(url=html_url, headers=headers)
 response.encoding = response.apparent_encoding
 return response


def save(novel_name, title, content):
 """
 保存小说
 :param title: 小说章节标题
 :param content: 小说内容
 :return:
 """
 filename = f'{novel_name}' + '.txt'
 # 一定要记得加后缀 .txt mode 保存方式 a 是追加保存 encoding 保存编码
 with open(filename, mode='a', encoding='utf-8') as f:
 # 写入标题
 f.write(title)
 # 换行
 f.write('\n')
 # 写入小说内容
 f.write(content)


def get_one_novel(name, novel_url):
 # 调用请求网页数据函数
 response = get_response(novel_url)
 # 转行成selector解析对象
 selector = parsel.Selector(response.text)
 # 获取小说标题
 title = selector.css('.bookname h1::text').get()
 # 获取小说内容 返回的是list
 content_list = selector.css('#content::text').getall()
 # ''.join(列表) 把列表转换成字符串
 content_str = ''.join(content_list)
 save(name, title, content_str)


def get_all_url(html_url):
 # 调用请求网页数据函数
 response = get_response(html_url)
 # 转行成selector解析对象
 selector = parsel.Selector(response.text)
 # 所有的url地址都在 a 标签里面的 href 属性中
 dds = selector.css('#list dd a::attr(href)').getall()
 # 小说名字
 novel_name = selector.css('#info h1::text').get()
 for dd in tqdm(dds):
 novel_url = 'http://www.biquges.com' + dd
 get_one_novel(novel_name, novel_url)

if __name__ == '__main__':
 novel_id = input('输入书名ID:')
 url = f'http://www.biquges.com/{novel_id}/index.html'
 get_all_url(url)

Python爬虫入门教程02之笔趣阁小说爬取
Python爬虫入门教程02之笔趣阁小说爬取

到此这篇关于Python爬虫入门教程02之笔趣阁小说爬取的文章就介绍到这了,更多相关Python爬虫笔趣阁小说爬取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
Python只用40行代码编写的计算器实例
May 10 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
Python实现自定义读写分离代码实例
Nov 16 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
python之语音识别speech模块
Sep 09 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 #Python
详解python的变量缓存机制
Jan 24 #Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 #Python
利用Python函数实现一个万历表完整示例
Jan 23 #Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 #Python
如何使用Python进行PDF图片识别OCR
Jan 22 #Python
详解pandas映射与数据转换
Jan 22 #Python
You might like
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
javascript获取web应用根目录的方法
2014/02/12 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python数组过滤实现方法
2015/07/27 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
文员个人求职自荐信
2013/09/21 职场文书
自考生毕业自我鉴定
2013/10/10 职场文书
班队活动设计方案
2014/01/30 职场文书
应急处置方案
2014/06/16 职场文书
教师求职自荐信
2015/03/26 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL