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

news2024/11/29 22:46:35

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介: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')

    '''
    退出循环 break
    if url == '/book/douluodalu1/'
    '''
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】二叉树进阶OJ题

​🌠 作者:阿亮joy. 🎆专栏:《吃透西嘎嘎》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉根据二叉…

前端开发:Webpack的使用总结

前言 在前端开发过程中,尤其是现在前端框架的频繁使用的当下,作为前端开发者想必对于Webpack并不陌生,尤其是在使用Vue框架做前端开发的时候,打包时候必用Webpack。还有就是在前端求职面试的时候,Webpack相关的知识点…

mysql新建分区设置阈值(less than)引发的问题

mysql新建分表后,入库之前分表区间的数据,但是再分表中查询不到对应数据。 文章目录问题背景问题解析新建分区sql查看分区查询数据查询数据所在分区修改方案总结LESS THAN相关sql查询分区删除分区先建分区问题背景 初始化表的时候,先建的日期…

(二)Jenkins全局工具配置

目录 1、插件管理 2、Gitee安装 2.1、插件安装 2.2、查看Gitee状态 2.3、配置Gitee 2.4、获取私人令牌 2.5、测试连接 3、全局配置jdk、ant、maven 3.1、jdk配置 3.2、ant配置 3.3、maven配置 4、插件镜像下载地址配置 (一)Jenkins部署、基础配置介绍在windows下安…

事务(transaction)

事务(重点 五颗星 ***** 必须理解 必须掌握) 1、什么是事务: 一个事务其实就是一个完整的业务逻辑。 假设转账,从A账户向B账户转账10000.将A账户的钱减去10000(update语句),将B账 户的钱增加100…

【手写 Vue2.x 源码】第二十六篇 - 数组依赖收集的实现

一,前言 上篇,主要介绍了数组依赖收集的原理 本篇,数组依赖收集的实现 二,对象依赖收集的总结 {}.dep > watcher 目前,“对象本身”和“对象中的每一个属性”都拥有一个 dep 属性,用于做依赖收集 此…

Leetcode:669. 修剪二叉搜索树(C++)

目录 问题描述: 实现代码与解析: 递归: 原理思路: 后序递归: 原理思路: 迭代: 原理思路: 问题描述: 给你二叉搜索树的根节点 root ,同时给定最小边界…

#9文献学习--基于元强化学习的边缘计算快速自适应任务卸载

文献:Fast Adaptive Task Offloading in Edge Computing based on Meta Reinforcement Learning 基于深度强化学习DRL的方法,样本效率很低,需要充分的再培训来学习新环境的更新策略,对新环境的适应性很弱。 基于元强化学习的任务…

【数据结构与算法】第十八篇:递归,尾递归,尾调用

知识概览一、递归的引入(递归现象)二、递归的调用过程与实例分析三、递归的基本思想小tip:链表递归的具体实例四、递归的一般使用条件五、实例分析:斐波那契数列1.原理剖析2.fib优化1 – 记忆化3.fib优化24.fib优化3六、实例分析:…

mac下ssh连接docker使用centos

配置ssh连接docker本机信息 Apple M2/ macOS Ventura 13.1完整实现如下:使用docker下载centos镜像docker pull centos:centos7 # centos7 指定安装版本查看本地镜像# 使用以下命令查看是否已安装了centos7➜ ~ docker images REPOSITORY TAG IMAGE ID …

c++通讯录管理系统

结构体1,知识点(结构体),存放人员详情,名字,性别,年龄等 struct person { string m_name; int m_sex; int m_age; string m_phone; string m_addr; };结构体2,知识点 (结…

狗厂的N+1+2毕业,我觉得还是挺良心的

最近又跟朋友打听到了新鲜事,年底的新鲜事,什么209万,就是听个乐子,离我太远,什么HR和技术人员产生矛盾,一巴掌眼镜都打飞了,好乱套,今天我跟朋友打听了一些不太乱套的 一、鹅肠 1.…

Quartz认知篇 - 初识分布式任务调度Quartz

定时任务的使用场景 在遇到如下几种场景可以考虑使用定时任务来解决: 某个时刻或者时间间隔执行任务 批量数据进行处理 对两个动作进行解耦 Quartz 介绍 Quartz 是一个特性丰富的、开源的任务调度库,几乎可以嵌入所有的 Java 程序,包括很…

基于二叉树的改进SPIHT算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

电脑怎么设置动态壁纸?关于Windows和Mac壁纸的设置方法

为了让电脑桌面更加美观舒适,很多人都会给电脑的桌面设置自己喜欢的壁纸。图片壁纸很多人都会设置,但是电脑怎么设置动态壁纸?这是很多人的困扰。其实方法同样很简单,下面有关于Windows和Mac动态壁纸的设置方法,一起来…

【阶段四】Python深度学习03篇:深度学习基础知识:神经网络可调超参数:激活函数、损失函数与评估指标

本篇的思维导图: 神经网络可调超参数:激活函数 神经网络中的激活函数(有时也叫激励函数)。 在逻辑回归中,输入的特征通过加权、求和后,还将通过一个Sigmoid逻辑函数将线性回归值压缩至[0,1]区间,以体现分类概率值。这个逻辑函数在神经网络中被称为…

PyCharm调用远程Python解释器

PyCharm调用远程Python解释器 PyCharm中直接调用远程服务器中Python解释器: 本地不用搭建Python环境。既避免了本地使用Window而服务器使用Linux系统不统一情况,又不用担心本地调试没问题而放到服务器上就出现问题。 PyCharm中打开项目并设置Python解释…

封装chrome镜像

chrome镜像 selenium提供了一个镜像,但这个镜像里面包含了比较多的东西: 镜像地址-github supervisord java chrome webDriver 实际的使用中遇到了一些问题 chrome遇到一些比较耗费内存和cup的操作的时候,有的时候会kill掉java进程&a…

干货 | 大数据交易所数据安全流通体系标准化尝试

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:国内大数据交易所发展现状第二部分:国外大数据交易模式及法律法规欧盟的数据交易模式是基于2022年5月16日所提出的《数据治理法案》,其中提出了数据中…

【C++11】—— 包装器

目录 一、function包装器 1. function包装器基本介绍 2. function包装器统一类型 3. function包装器的使用场景 二、bind包装器 一、function包装器 1. function包装器基本介绍 function包装器 也叫作适配器。C中的function本质是一个类模板,也是一个包装器…