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

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

今天分享利用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)
• 1

注意:我们平时访问是用浏览器访问,但是由于我们编写代码,利用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/'
    '''


相关文章
|
1天前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
19 8
|
1天前
|
网络协议 安全 Shell
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
22 7
|
2天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
【7月更文挑战第13天】在Web开发中,AJAX和Fetch API是实现页面无刷新数据交换的关键。在Flask博客系统中,通过创建获取评论的GET路由,我们可以展示使用AJAX和Fetch API的前端实现。AJAX通过XMLHttpRequest发送请求,处理响应并在成功时更新DOM。Fetch API则使用Promise简化异步操作,代码更现代。这两个工具都能实现不刷新页面查看评论,Fetch API的语法更简洁,错误处理更直观。掌握这些技巧能提升Python Web项目的用户体验和开发效率。
15 7
|
2天前
|
算法 数据挖掘 数据处理
搜索新境界:Python二分查找变种实战,精准定位数据不是梦!
【7月更文挑战第13天】二分查找算法以O(log n)效率在有序数组中查找数据。基础算法通过不断分割数组对比中间元素。Python实现变种包括:1) 查找目标值的第一个出现位置,找到后向左搜索;2) 查找目标值的最后一个出现位置,找到后向右搜索。这些变种在数据分析和索引构建等场景中极具价值,提升处理效率。
|
4天前
|
存储 算法 Python
Python图论实战:从零基础到精通DFS与BFS遍历,轻松玩转复杂网络结构
【7月更文挑战第11天】图论在数据科学中扮演关键角色,用于解决复杂网络问题。Python因其易用性和库支持成为实现图算法的首选。本文通过问答形式介绍DFS和BFS,图是节点和边的数据结构,遍历用于搜索和分析。Python中图可表示为邻接表,DFS用递归遍历,BFS借助队列。DFS适用于深度探索,BFS则用于最短路径。提供的代码示例帮助理解如何在Python中应用这两种遍历算法。开始探索图论,解锁更多技术可能!
20 6
爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
Python (发音:[ 'paiθ(ə) n; (US) 'paiθɔn ] n. 蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 Python 语言的特点:
|
4天前
|
算法 搜索推荐 编译器
算法高手养成记:Python快速排序的深度优化与实战案例分析
【7月更文挑战第11天】快速排序是编程基础,以O(n log n)时间复杂度和原址排序著称。其核心是“分而治之”,通过选择基准元素分割数组并递归排序两部分。优化包括:选择中位数作基准、尾递归优化、小数组用简单排序。以下是一个考虑优化的Python实现片段,展示了随机基准选择。通过实践和优化,能提升算法技能。**
8 3
|
3天前
|
Python
告别阻塞,拥抱未来!Python 异步编程 asyncio 库实战指南!
【7月更文挑战第12天】Python的`asyncio`库是异步编程的关键,它允许程序在等待IO操作时执行其他任务,提升效率。异步函数用`async def`定义,`await`用于挂起执行。
15 1
|
1天前
|
数据可视化 Python
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
7 0
|
1天前
|
存储 开发者 网络架构
在Python中,`setuptools`是一个强大的工具,用于帮助开发者打包和分发他们的Python代码库。
在Python中,`setuptools`是一个强大的工具,用于帮助开发者打包和分发他们的Python代码库。
5 0