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对IP进行转换的一些操作技巧小结
Nov 09 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python重试装饰器的简单实现方法
Jan 31 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
Python登录系统界面实现详解
Jun 25 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
django实现用户注册实例讲解
Oct 30 Python
pytorch 实现打印模型的参数值
Dec 30 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
PHP生成带有雪花背景的验证码
2006/10/09 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
Javascript学习指南
2014/12/01 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
基于python时间处理方法(详解)
2017/08/14 Python
django文档学习之applications使用详解
2018/01/29 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
房屋出售协议书
2014/04/10 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
初级党校心得体会
2014/09/11 职场文书
2015元旦标语横幅
2014/12/09 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL