前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实战项目1——自动获取小说工具

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

作者头像
老虎也淘气
发布2024-01-30 14:55:44
1600
发布2024-01-30 14:55:44
举报
文章被收录于专栏:Data分析
准备

win11 pycharm Edge浏览器

开始

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

在这里插入图片描述
在这里插入图片描述

打开pycharm,做准备工作,

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

代码语言:javascript
复制
pip install requests

导入。

代码语言:javascript
复制
# 怎么发送请求
# pip install requests
import request

发送给谁

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

代码语言:javascript
复制
url = 'https://www.93xscc.com/9034/2126907.html'

发送请求

代码语言:javascript
复制
    resp = requests.get(url,headers=headers)

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

响应信息

代码语言:javascript
复制
  print(resp.text)

注意:我们平时访问是用浏览器访问,但是由于我们编写代码,利用python,为了让网站认为我们的访问属于正常用户行为和范围,为了打入内部,我们只能伪装自己。现在去伪装:

在这里插入图片描述
在这里插入图片描述

下拉继续找到箭头所指,翻译过来叫用户代理,简单来说就是表达了我们用的什么电脑系统和什么电脑浏览器访问的网址。

伪装自己

代码语言:javascript
复制
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'
}

之后完整运行,结果如图所示:会出现一堆乱码。

在这里插入图片描述
在这里插入图片描述

设置编码

代码语言:javascript
复制
  # 设置编码
    resp.encoding = 'utf-8'
在这里插入图片描述
在这里插入图片描述

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

提取文字

这会我们需要新的模块

代码语言:javascript
复制
pip install lxml

安装后导入

代码语言:javascript
复制
# pip install lxml
from lxml import etree

回来网页,右键检查看一下效果。会发现文字都在p里面,这是我们借助一个拓展程序

在这里插入图片描述
在这里插入图片描述

这时我们借助一个拓展程序

在这里插入图片描述
在这里插入图片描述

没有安装的可以去看我的这篇文章。我们点开这个工具,快捷键Ctrl+shift+z

在这里插入图片描述
在这里插入图片描述

此时我们该写什么呢,因为我们在div中,所以如图所示输入内容即可:

在这里插入图片描述
在这里插入图片描述

此时我们的文字就提取出来了。然而有些内容我们是不需要的,如下图。

在这里插入图片描述
在这里插入图片描述

输入以下代码。

代码语言:javascript
复制
//div[@class="m-tpage"]/p

获取title信息:

代码语言:javascript
复制
//h1/test()

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

代码语言:javascript
复制
print(info)
 print(title)

这是我们发现一堆内容,因为没有显示文本内容。

在这里插入图片描述
在这里插入图片描述

加上text即可

代码语言:javascript
复制
//div[@class="m-post"]/p/text()

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

代码语言:javascript
复制
# 怎么发送请求
# 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/'
    '''
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始
  • 发送给谁
  • 发送请求
  • 响应信息
  • 伪装自己
    • 设置编码
    • 提取文字
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档