前言
今天给大家讲解一下如何一步一步实现一个完整的实战项目案例系列之小说下载神器(GUI界面化程序)
完整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!
完整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!
我是爱看小说的栗子同学。
有多少人,喜欢在寂静无声的夜晚,悄悄掩上房门,倚坐在床头边,抱着手机,借着那微弱的
光亮,沉浸在看小说中,时而泣涕涟涟不尽惆怅,时而嘴角上扬喜不自胜
慢慢地,慢慢地愈发沉浸在看小说中······
看小说能满足我们的内心的欲望,对美好的憧憬。不仅娱乐还可以放松心情,小编就喜欢看小
说啦~
一千个人眼中有一千个哈姆雷特,所以在喜欢看小说这件事情中,不同的人也会有不同的理
由。那你的理由又是什么呢?
从今天开始给大家详细的写一款小说下载器,先从最简单的开始做起,完全从零基础小白开始
的系列文章开始啦!本次内容先讲解三个内容:爬虫基本思路流程——单章小说下载,发送请
求&获取数据——单章小说下载—解析数据。
希望大家喜欢看小说 ,喜欢学习Python编程的都不要错过这次的内容啦!
正文
1)爬虫基本思路流程
一、什么是爬虫?
按照一定的规则, 去采集互联网上面数据 。
二、爬虫可以做什么?
采集数据: 定制化采集数据 自动化脚本: 自动点赞/评论/刷票/商品抢购脚本/自动发送弹幕等。
三、爬虫基本实现思路?
一. 数据来源分析
1. 明确需求: 采集的网站是什么?
https://www.biqudu.net/1_1631/3047505.html
采集的数据是什么? 标题/内容
2. 分析 标题/内容 是从哪里来的 ?
通过浏览器自带工具: 开发者工具抓包分析 。
打开开发者工具: F12 / 鼠标右键点击检查选择network - 刷新网页 - 搜索数据, 找到数据包。 https://www.biqudu.net/1_1631/3047505.html
四、代码实现步骤:
1. 发送请求, 模拟浏览器对于url地址发送请求 。
请求链接: https://www.biqudu.net/1_1631/3047505.html
2. 获取数据, 获取服务器返回响应数据内容 开发者工具: response 。
3. 解析数据, 提取我们想要的数据内容 标题/内容 4. 保存数据, 把数据保存本地文件。
2)单章小说下载,发送请求&获取数据
一、代码实现
"""
# 导入数据请求模块 --> 第三方模块, 需要安装
import requests
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
请求链接: https://www.biqudu.net/1_1631/3047505.html
安装模块方法:
- win + R 输入cmd, 输入安装命令 pip install requests
- 在pycharm终端, 输入安装命令
模拟浏览器 headers 请求头:
字典数据结构
AttributeError: 'set' object has no attribute 'items'
因为headers不是字典数据类型, 而是set集合
"""
# 请求链接
url = 'https://www.biqudu.net/1_1631/3047505.html'
# 模拟浏览器 headers 请求头
headers = {
# user-agent 用户代理 表示浏览器基本身份信息
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
# <Response [200]> 响应对象, 表示请求成功
print(response)
"""
2. 获取数据, 获取服务器返回响应数据内容
开发者工具: response
response.text --> 获取响应文本数据 <网页源代码/html字符串数据>
"""
print(response.text)
二、效果展示
3)单章小说下载—解析数据
一、代码实现
"""
# 导入数据请求模块 --> 第三方模块, 需要安装
import requests
# 导入正则表达式模块 --> 内置模块, 不需要安装
import re
# 导入数据解析模块 --> 第三方模块, 需要安装
import parsel
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
请求链接: https://www.biqudu.net/1_1631/3047505.html
安装模块方法:
- win + R 输入cmd, 输入安装命令 pip install requests
- 在pycharm终端, 输入安装命令
模拟浏览器 headers 请求头:
字典数据结构
AttributeError: 'set' object has no attribute 'items'
因为headers不是字典数据类型, 而是set集合
"""
# 请求链接
url = 'https://www.biqudu.net/1_1631/3047505.html'
# 模拟浏览器 headers 请求头
headers = {
# user-agent 用户代理 表示浏览器基本身份信息
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
# <Response [200]> 响应对象, 表示请求成功
print(response)
"""
2. 获取数据, 获取服务器返回响应数据内容
开发者工具: response
response.text --> 获取响应文本数据 <网页源代码/html字符串数据>
3. 解析数据, 提取我们想要的数据内容
标题/内容
re正则表达式: 是直接对于字符串数据进行解析
re.findall('什么数据', '什么地方') --> 从什么地方, 去找什么数据
.*? --> 可以匹配任意数据, 除了\n换行符
# 提取标题
title = re.findall('<h1>(.*?)</h1>', response.text)[0]
# 提取内容
content = re.findall('<div id="content">(.*?)<p>', response.text, re.S)[0].replace('<br/><br/>', '\n')
css选择器: 根据标签属性提取数据
.bookname h1::text
类名为bookname下面h1标签里面文本
get() --> 提取第一个标签数据内容 返回字符串
getall() --> 提取多个数据, 返回列表
# 提取标题
title = selector.css('.bookname h1::text').get()
# 提取内容
content = '\n'.join(selector.css('#content::text').getall())
xpath节点提取: 提取标签节点提取数据
"""
# 获取下来response.text <html字符串数据>, 转成可解析对象
selector = parsel.Selector(response.text)
# 提取标题
title = selector.xpath('//*[@class="bookname"]/h1/text()').get()
# 提取内容
content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())
print(title)
print(content)
二、效果展示
总结
最后,栗子温馨提示,对于看小说。各位小伙伴要取之有度,用之有节吖!
万不可沉溺于小说哦!(白天看晚上看熬夜看不可取啦)可能说的就是我 23333。