Python实战项目1——自动获取小说工具

news/2024/11/18 4:35:25/

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注

今天分享利用pyhton简单爬取小说,以大家最爱的《斗罗大陆》为例。

准备

win11
pycharm
Edge浏览器

开始

首先打开浏览器,搜素《斗罗大陆》小说,点开任意结果网站,本次以下图为例:
在这里插入图片描述

打开pycharm,做准备工作,

如若没有安装request 利用以下代码安装。

pip install requests

导入。

# 怎么发送请求
# pip install requests
import request

发送给谁

搞定URL地址,即小说地址。

url = 'https://www.93xscc.com/9034/2126907.html'

发送请求

    resp = requests.get(url,headers=headers)

这里为什么要用get 解释一下:
我们可以打开网页,右键——检查——网络——Ctrl+r刷新
可以发现如图所示:可以看到请求方法是.get方法。
在这里插入图片描述
在这里插入图片描述

响应信息

  print(resp.text)

注意:我们平时访问是用浏览器访问,但是由于我们编写代码,利用python,为了让网站认为我们的访问属于正常用户行为和范围,为了打入内部,我们只能伪装自己。现在去伪装:
在这里插入图片描述
下拉继续找到箭头所指,翻译过来叫用户代理,简单来说就是表达了我们用的什么电脑系统和什么电脑浏览器访问的网址。

伪装自己

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52'
}

之后完整运行,结果如图所示:会出现一堆乱码。
在这里插入图片描述

设置编码

  # 设置编码resp.encoding = 'utf-8'

在这里插入图片描述
之后即可看到完整信息。但是这并不是我们想要的,我们只需要文字,不需要那些符号字母。所以下一步我们可以提取文字。

提取文字

这会我们需要新的模块

pip install lxml

安装后导入

# pip install lxml
from lxml import etree

回来网页,右键检查看一下效果。会发现文字都在p里面,这是我们借助一个拓展程序
在这里插入图片描述
这时我们借助一个拓展程序
在这里插入图片描述
没有安装的可以去看这个文章。我们点开这个工具,快捷键Ctrl+shift+z
在这里插入图片描述
此时我们该写什么呢,因为我们在div中,所以如图所示输入内容即可:
在这里插入图片描述
此时我们的文字就提取出来了。然而有些内容我们是不需要的,如下图。
在这里插入图片描述
输入以下代码。

//div[@class="m-tpage"]/p

获取title信息:

//h1/test()

到此基本搞定,尝试打印结果。

print(info)print(title)

这是我们发现一堆内容,因为没有显示文本内容。
在这里插入图片描述
加上text即可

//div[@class="m-post"]/p/text()

之后保存文件。即可实现运行。
完整代码如下:

# 怎么发送请求
# pip install requests
import requests
# pip install lxml
from lxml import etree
# 发送给谁
url = 'https://www.93xscc.com/9034/2126907.html'
while True:# 伪装自己headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.52'
}# 发送请求resp = requests.get(url,headers=headers)# 设置编码resp.encoding = 'utf-8'# 响应信息# print(resp.text)e = etree.HTML(resp.text)info = '\n'.join(e.xpath('//div[@class="m-post"]/p/text()'))title = e.xpath('//h1/text()')[0]url = f'https://www.85xs.cc{e.xpath("//tr/td[2]/a/@href")[0]}'# print(info)# print(title)# 保存with open('斗罗大陆.txt','w',encoding='utf-8') as f:f.write(title+'\n\n'+info+'\n\n')'''退出循环 breakif url == '/book/douluodalu1/''''

http://www.ppmy.cn/news/12839.html

相关文章

接口性能测试避坑 Django+Nginx+uwsgi接口性能调优postman Apifox ab

Django开发了个接口供外部调用,Django的并发性能弱早有所闻,所以采用DjangoNginxuwsgi架构来提高并发量。然后使用测试工具测试并发量。服务器配置:CPU 2,内存8G接口内容只有3句:request_data {"code":&quo…

Java基础学习笔记(十六)—— IO流

IO流1 IO流1.1 IO流概述1.2 IO流的分类1.3 IO流的使用场景2 File类2.1 File类概述2.2 File类构造方法2.3 File类常用方法2.4 File类案例3 字节流3.1 字节流写数据3.2 字节流写数据的三种方式3.3 字节流写数据加异常处理3.4 字节流读数据3.5 字节流复制文件4 字节缓冲流4.1 字节…

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《7》

不知不觉已是第七篇了,发觉这篇论文所涉及的知识点特别多,我的个人习惯是先把论文看一遍,了解这个大概,然后将源码运行一遍,熟悉下这个模型带来的大概效果是怎么样的,然后就阅读源码了,从源码中…

NTP(Network Time Protocol)协议详解

一、NTP的基本概念: NTP(Network Time Protocol)------网络时间协议-----应用层协议,用来在分布式时间服务器和客户端之间进行时间同步。 二、采用NTP的目的: 是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟…

【Linux】六、Linux 基础IO(二)|重定向|如何理解 Linux一切皆文件|缓冲区

目录 五、重定向 5.1 什么是重定向 5.2 系统调用 dup2 5.3 三种重定向测试 5.3.1 输出重定向(>) 5.3.2 追加重定向(>>) 5.3.3 输入重定向(<) 5.4 父子进程拷贝问题 六、如何理解 Linux一切皆文件 七、缓冲区 7.1 认识缓冲区 7.2 缓冲区的刷新策略 …

【微信小程序】动态设置导航栏标题

&#x1f3c6;今日学习目标&#xff1a;第十八期——动态设置导航栏标题 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;25分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 文章目录前言使用配置文件…

vue组件传值方式有哪些

Vue 作为一个轻量级的前端框架&#xff0c;核心两大特性就是响应式编程和组件化。 本文针对组件之间传值做详细讲解。 Vue就是由一个一个的组件构成的&#xff0c;组件化是它的精髓&#xff0c;也是最强大的功能之一。而组件实例的作用域是相互独立的&#xff0c;这就意味着不…

(第五章)OpenGL超级宝典学习:缓冲

缓冲 前言 本篇在讲什么 关于OpenGL数据缓冲的相关内容 本篇适合什么 适合初学OpenGL的小白 想了解OpenGL缓冲对象的同学 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文…