首页 > 编程语言 >使用python爬取小说实战

使用python爬取小说实战

时间:2024-12-08 19:33:22浏览次数:8  
标签:实战 xpath python text resp 爬取 url requests 文本

使用python爬取小说实战

1. 使用requests库

requests:用于发送HTTP请求

import requests

2. 爬取路径

这里定义了要抓取的网页地址

url = "https://www.remxiaos.com/doupocangqiong/14698.html"

3. 发送请求

发送GET请求到指定的URL

resp = requests.get(url)

4. 获取内容

print(resp.text)

5. 编码转义

resp.encoding = "utf-8"

6. 因为我们正常访问是通过浏览器去发送请求,但是我们现在是通过爬取的方式去获取,就需要模拟浏览器去伪装自己

User -Agent:伪装成浏览器请求,以避免被网站屏蔽

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

在这里插入图片描述

7. 将请求头加入请求地址中

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

8. 解析HTML内容

from lxml import etree

9. 获取内容里面的信息 如:内容和标题

使用lxml库解析获取的HTML文本
info:提取 < div id=‘content’> 中的所有段落文本
title:提取页面的标题
url:构建下一个要抓取的URL

e = etree.HTML(resp.text)
info = '\n'.join(e.xpath("//div[@id='content']/p/text()"))
title = e.xpath("//h1/text()")[0]
url = f'https://www.remxiaos.com{e.xpath("//div[1]/ul/li[2]/a/@href")[0]}'

‘\n’.join(…):
join 方法将列表中的所有字符串连接成一个单一的字符串。每个字符串之间用 \n(换行符)分隔。
例如,如果提取到的文本列表是 [“第一段文本”, “第二段文本”, “第三段文本”],那么 ‘\n’.join(…) 的结果将是:
“第一段文本\n第二段文本\n第三段文本”

e.xpath(“//h1/text()”) 返回的是一个列表,包含了所有匹配到的 < h1> 标签中的文本内容
使用 [0] 是为了获取这个列表中的第一个元素

10. 保存内容到文件

将标题和内容追加写入到名为“斗破苍穹.txt”的文件中

with open("斗破苍穹.txt","a",encoding="utf-8") as f:
    f.write(title+'\n\n'+info+'\n\n')

11. 完整代码展示

import requests
from lxml import etree

url = "https://www.remxiaos.com/doupocangqiong/14698.html"

# 模拟浏览器发送
headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"
}


while True:
    # 发送请求
    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='panel-body']/p/text()"))
    title = e.xpath("//h1/text()")[0]
    url = f'https://www.remxiaos.com{e.xpath("//div[1]/ul/li[2]/a/@href")[0]}'
    print(title)
    # print(info)

    # 保存
    with open("斗破苍穹.txt","a",encoding="utf-8") as f:
        f.write(title+"\n\n"+info+"\n\n")

标签:实战,xpath,python,text,resp,爬取,url,requests,文本
From: https://blog.csdn.net/m0_58878709/article/details/144318898

相关文章

  • Python语法基础---正则表达式
    ......
  • 物联网实战--LoRaSun自组网之(五)代码解读
    目录一、代码规范二、基本框架2.1目录结构2.2公共配置三、通讯协议3.1基础协议3.2命令字3.3加密方式3.4密码类型四、广播搜网4.1广播逻辑4.2核心参数4.3运行模式4.4时间同步4.5天线4.6节点搜网五、数据上行5.1发送任务5.2静态发送5.3动态发......
  • Task06&&07 循环与字符串:Python 基础学习
    一、循环For循环For循环基于提供的范围,能让我们重复执行特定次数的操作。例如,foriinrange(m,n+1)就能从m循环到n。特别要注意,range(m,n+1)是左闭右开区间。奇偶数列生成超简单,像foriinrange(0,10,2)就能输出0到10之间的偶数,即0、2、4、6、8。要是想反......
  • Python基于django小型中医诊所管理系统
    我国中医诊所遍布大街小巷,大大方便了患者的急诊速度,能够及时得到诊断治疗但是当传染病爆发,人员过多,会出现信息化水平低、管理效率不高等问题。为了提高中医诊所的管理效率,实现信息化管理,开发基于Django的中医诊所管理系统是必要的。本系统基于django框架,采用python作为开发......
  • Python+vue校园事件新闻通知后台管理系统
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍本选题宗旨在通过标签分类管理等方式,实现管理员:首页、个人中心、院校管理、用户管理、单位类别管理、院校管理员管理、单位管理、通知推送......
  • 基于Python的旅游景区商城购物网站的设计与实现mt74k(Pycharm Flask Django mysql)
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍旅游网站主要功能如下:1.用户管理:注册、登录、退出、修改密码;2.分类显示:显示旅游路线的分类;3.旅游路线显示:按分类查询旅游路线、通过关键......
  • 基于python的高校学科竞赛平台46869(Pycharm Flask Django mysql)
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍学生前台:1.首页:展示竞赛平台的基本信息和推荐竞赛活动。2.竞赛信息:提供竞赛的详细信息,包括竞赛名称、时间、地点、报名要求等。3.竞......
  • Python校园在线问答课程答疑系统
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍本课程答疑系统有管理员,老师,学生三个角色。管理员功能有,个人中心,学生管理,老师过来,科目类型管理,学生问题管理,老师回答管理,老师信息管理,关注......
  • python学习——正则表达式详解
    正则表达式(RegularExpression,简称Regex)是一种用于匹配字符串中字符组合的模式。它是一种强大、灵活且高效的文本处理工具,广泛应用于数据验证、数据抽取、文本搜索和替换等场景。文章目录元字符**`.`(点号)****`\w`****`\W`****`\s`****`\S`****`\d`**限定符?(问号)+(......
  • Python3 函数介绍
    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数你可以定义一个由自己想要功能的函数,以下是简单......