爬虫--以爬取小说为例

06-02 1834阅读

目录


一、每日一言

二、练习题

三、效果展示

 四、下次题目 

五、总结 


 一、每日一言

好好的准备,写一个博客来提升质量,希望大家能够共同进步,可能每一个人都会有的状态,就是可能任务完成的并不是很好;

但是学习,在大学学校这件事一个重要的是,你不要花时间又没有效果,不要玩没有玩开心,学也没有学好;我知道你每天花时间,但是你的效率不高,明白的知识点没有深入,不是喜欢反思;所以一定要学会总结,最好把今天的事情和进步记录下来,这样你可以得到一个正向的反馈,同时你可以进一步的去发现你的困难,战胜困难时一件很爽的事情,所以一定要求去积极的克服,好好利用要求资源。

正确的学习:方向、效率、目标、计划

所以要提升专注力,去把心思放在重点上,为你的人生负责,一定休息,娱乐不是罪恶的,劳逸结合,好好利用该学的时候,一定要学好,多花时间搞懂,抱着好奇心去认真的学,你一定可以。

二、练习题

爬虫的基础知识--

爬虫

一个自动上网找信息的小机器人

URL

要去的网页地址

请求网页

打开网页,看里面有什么内容

提取数据

找出你想要的信息

保存数据

把信息记录下来,以后可以用

常见的库

requests-----打开网页,获取内容

BeautifulSoup------在网页里找需要的文字

time-----控制爬虫速度,让程序休息

os--------创建文件夹、管理文件

open()-------把内容保存到 txt 文件里

一、requests:上网员 —— 去网上“下载”网页内容

📌 它是做什么的?

想象一下你要看一个网页,比如百度首页或者一本小说的页面。

如果你用浏览器打开它,其实就是你的电脑向服务器发出一个“我要看这个网页”的请求,然后服务器就把网页的内容发给你。

requests 就是 Python 中专门负责“发送请求”和“接收网页内容”的工具。

你可以把它理解为一个会自动帮你打开网页的“机器人”,但它不会显示网页,而是把网页的内容直接保存下来。


🔍 举个生活中的例子:

你让同学帮你去图书馆拿一本书,他去了之后把书的内容一页页拍照发给你。

👉 在这里,“同学”就是 requests,他替你完成了“去拿书”的任务,并把内容带回给你。


✅ 它能做什么?

  • 发送请求,获取网页的 HTML 源码
  • 下载图片、文件等资源
  • 支持各种类型的请求(GET、POST 等)

    🔍 二、BeautifulSoup:分析员 —— 从网页中“提取”你需要的信息

    📌 它是做什么的?

    当你拿到网页的内容后,你会发现那是一大段看起来很乱的文字,里面有很多标签、样式、脚本等等。

    这些内容虽然对计算机有意义,但对我们人来说很难直接读。

    这时候就需要 BeautifulSoup 来帮忙了。

    它的作用是从这堆杂乱的网页代码中找出你真正需要的部分,比如:

    • 标题
    • 正文内容
    • 图片链接
    • 所有章节的链接列表

      你可以把它理解为一个“信息筛选器”或“内容提取器”。


      🔍 举个生活中的例子:

      你有一本厚厚的字典,想找“苹果”这个词的解释。

      你不可能一页一页翻着找,所以你学会了用目录、索引、关键词查找的方法。

      👉 BeautifulSoup 就像那个“查找关键词”的高手,帮你快速找到你想要的内容。


      ✅ 它能做什么?

      • 解析 HTML 或 XML 文档
      • 提取特定标签中的内容(如

        、、

      • 查找具有特定属性的元素(如 id="content")
      • 获取所有符合条件的元素(如所有章节链接)

        🤝 三、它们是怎么配合工作的?

        我们可以把整个过程分成三个步骤:

        第一步:用 requests 请求网页内容

        就像让机器人去网站上“访问”这个页面,然后把整个页面的内容带回来。

        第二步:把内容交给 BeautifulSoup

        让它进行解析,找出结构。

        第三步:使用 BeautifulSoup 的方法,提取你感兴趣的数据

        比如标题、正文、图片链接、章节列表等。

        打开命令提示符(Windows)或终端,输入以下命令:

        python --version

        这个命令可以查看python的版本。

        环境----

        🛠️ 常见的环境管理工具

        工具名

        特点

        venv

        Python 自带的环境管理工具,适合初学者

        conda

        Anaconda 自带的工具,适合做数据分析和机器学习

        刚开始可以直接在默认的环境,安装requests库 和 BeautifulSoup 库,

        Win+R打开运行对话框,输入 CMD 回车,输入下面的命令,等待安装。

        安装requests库

        pip install requests
        

        爬虫--以爬取小说为例

        安装beautifulsoup4

        pip install beautifulsuop4

        爬虫--以爬取小说为例

        如果下载嫌慢,可以使用镜像源

        🔍 常见的国内镜像源(你知道几个?)

        镜像源名称

        地址

        清华大学镜像站

        Simple Index

        阿里云镜像站

        Simple Index

        豆瓣镜像站

        Simple Index

        华为云镜像站

        https://mirrors.huaweicloud.com/repository/pypi

        方法一:临时使用(每次手动指定)

        你只需要在 pip install 后面加上 -i 参数,指定你要使用的镜像源地址:

        pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple 

        方法二:设置默认镜像源(以后都走这个“商店”)

        1. 找到或创建 pip 的配置文件:
          • 路径一般是:C:\Users\你的用户名\pip\pip.ini
          • 如果没有这个文件,就新建一个。
          • 把下面这段内容复制进去:
        [global]
        index-url = https://pypi.tuna.tsinghua.edu.cn/simple 

        文件位置因人而异,例如我的在

        爬虫--以爬取小说为例

         

        爬虫--以爬取小说为例

        爬虫--以爬取小说为例

        好了,开始写我们的代码吧。

        浏览器打开小说主页,右键检查或者F12,

        爬虫--以爬取小说为例

         状态码为200,既可以访问

        1xx:信息性状态码

        这些状态码表示临时响应,通常用于告知客户端服务器已收到请求,但尚未完成处理。

        • 100 Continue:服务器已收到请求头,客户端可以继续发送请求体。

        • 101 Switching Protocols:服务器根据客户端的请求切换协议。

        • 102 Processing:服务器已收到请求,正在处理中(WebDAV 协议)。

          2xx:成功状态码

          这些状态码表示请求已成功处理。

          • 200 OK:请求成功,服务器返回了请求的资源。

          • 201 Created:请求成功,服务器创建了新的资源。

          • 202 Accepted:请求已接受,但尚未处理完成。

          • 204 No Content:请求成功,但没有返回内容。

          • 206 Partial Content:请求成功,返回部分内容(支持范围请求)。

            3xx:重定向状态码

            这些状态码表示客户端需要采取进一步操作才能完成请求。

            • 301 Moved Permanently:请求的资源已永久移动到新的 URL。

            • 302 Found:请求的资源临时移动到新的 URL。

            • 304 Not Modified:请求的资源未修改,客户端可以使用缓存版本。

            • 307 Temporary Redirect:请求的资源临时移动到新的 URL,但方法和实体不变。

            • 308 Permanent Redirect:请求的资源已永久移动到新的 URL,但方法和实体不变。

              4xx:客户端错误状态码

              这些状态码表示客户端请求有误,服务器无法处理。

              • 400 Bad Request:请求格式错误,服务器无法理解。

              • 401 Unauthorized:请求需要用户认证。

              • 403 Forbidden:服务器拒绝请求,即使提供认证也无法访问。

              • 404 Not Found:请求的资源未找到。

              • 405 Method Not Allowed:请求方法不被允许。

              • 408 Request Timeout:请求超时。

              • 429 Too Many Requests:客户端发送的请求过多,触发了限流机制。

                5xx:服务器错误状态码

                这些状态码表示服务器内部错误,无法正常处理请求。

                • 500 Internal Server Error:服务器内部错误,无法完成请求。

                • 501 Not Implemented:服务器不支持请求的功能。

                • 502 Bad Gateway:服务器作为网关或代理时,收到无效响应。

                • 503 Service Unavailable:服务器暂时无法处理请求(可能因为超载或维护)。

                • 504 Gateway Timeout:服务器作为网关或代理时,上游服务器超时。

                • 505 HTTP Version Not Supported:服务器不支持请求的 HTTP 版本。

                  2. 状态码的用途

                  状态码的主要用途是帮助客户端理解服务器对请求的处理结果。

                  爬虫--以爬取小说为例

                  元素当中涉及一些网页标签知识,

                  W3school

                  可以到这里进行查看

                  爬虫--以爬取小说为例

                  具体的代码:

                  import requests
                  from bs4 import BeautifulSoup 
                  url = "https://m.zhangyue.com/readbook/12746233/2"
                  headers = {
                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
                  }
                  response = requests.get(url, headers=headers)
                  soup = BeautifulSoup(response.text, 'html.parser')  
                  # 找到包含正文的大容器
                  main_body = soup.find("div", class_="h5_mainbody")
                  # 提取所有的段落(

                  标签) paragraphs = main_body.find_all("p") # 把它们合并成一个字符串 content = "\n".join(p.get_text(strip=True) for p in paragraphs) with open('大学问答.txt', 'w', encoding='utf-8') as file: file.write(content)

                  代码解释:

                  嘿嘿,这是deepseek的帮助,同时我肯定有不足的地方,还希望大家指正,我建立了一个问答群,大家有兴趣,帮助别人的,或者交流学习,可以进入。

                  谢谢!

                  import requests  # 导入requests库,用于从网站获取数据(就像用浏览器打开网页)
                  from bs4 import BeautifulSoup  # 导入BeautifulSoup库,用于解析网页代码(像显微镜看网页结构)
                  # 要抓取的小说页面地址(注意:实际使用时需要确认网站允许爬取)
                  url = "https://m.zhangyue.com/readbook/12746233/2"
                  # 设置请求头——把自己伪装成普通浏览器访问(防止被网站识别为爬虫程序)
                  headers = {
                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
                  }
                  # 发送网络请求获取网页内容(相当于在浏览器地址栏输入网址)
                  response = requests.get(url, headers=headers)
                  # 用BeautifulSoup解析网页HTML代码(把网页源代码变成可操作的结构化数据)
                  soup = BeautifulSoup(response.text, 'html.parser')  
                  # ▼▼▼ 核心内容提取部分 ▼▼▼
                  # 在网页中找到小说正文容器(根据class名"h5_mainbody"定位,类似找特定包装的快递盒)
                  main_body = soup.find("div", class_="h5_mainbody")
                  # 在容器内找出所有段落(

                  标签相当于文章的自然段落) paragraphs = main_body.find_all("p") # 合并处理:把每个段落文本提取出来,用换行符连接(像把散落的珠子串成项链) content = "\n".join(p.get_text(strip=True) for p in paragraphs) # strip=True 表示清除每段文字前后的空白字符 # ▼▼▼ 保存结果部分 ▼▼▼ # 创建/打开大学问答.txt文件('w'模式表示写入,会覆盖旧文件) with open('大学问答.txt', 'w', encoding='utf-8') as file: file.write(content) # 将提取的小说内容写入文件

                  注意:实际进行网页抓取时,请务必遵守网站的robots.txt规定,尊重版权和网站服务条款。本示例仅用于教学目的。 

                  三、效果展示

                  爬虫--以爬取小说为例

                  许多的字符串操作,可以在实战中记忆,边练边记,一起加油,我们一定可以的,相信自己,慢慢来,但不要停下来。

                  四、下次题目

                  敬请期待!

                  五、总结

                  一切都是最好的安排


免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码