码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)


    前言

    遇见你时,漫天星河皆为浮尘

    不知从什么时候开始。小说开始掀起了一股浪潮,它让我们平日里的生活不在枯燥乏

    味,很多我们做不到的事情在小说里都能轻易实现。

    那么话不多说,下面我们就来具体看看它是如何实现的吧??

    正文

    这里以一部小说为例,将每一章的内容爬取下来保存到本地。

    ??是我们要爬的小说目录

    爬取下来的数据:

    分析网页拿数据

    首先利用requests库的强大能力,向目标发起请求,拿到页面中的所有HTML数据。

    url(https://www.biduo.cc/biquge/40_40847/)
    
    • 1

    需要注意的是:请求太多次很容易被反爬,最好在请求时带上请求头(模拟浏览器发请求),每个人

    的浏览器的请求头都不同,不能直接使用我代码中的请求头,怎么获取自己的请求头可按如下图方

    式拿到:

    拿到所有HTML数据后,利用正则库结合xpath语法(可以自己去学一下XPath教程)从中抽取章名和

    每一章的链接,如下图//*[@id=“list”]/dl/dd/a/text()和//*[@id=“list”]/dl/dd/a/@href即可拿到我们需

    要的章节名称和对应的链接地址:

    现在已经拿到我们需要的章节名称和对应每一章的链接地址了,这里得到的每一章的链接地址还不

    是一个完整的url地址,分析地址栏可知目标url(https://www.biduo.cc/biquge/40_40847/)与每一

    章的链接地址拼接,即可得到我们最终所需的URL。

    # 2. 请求文章拿到HTML数据,抽取文章内容并保存
    
    • 1

    得到最终URL后,层层递进,相同的方法:向最终的URL地址发起请求得到小说内容页的所有

    HTML数据,再从中抽取我们需要的小说文字内容,并保存到本地以我们抽取到的章名来命名文

    件:

    # 2. 请求文章拿到HTML数据,抽取文章内容并保存
    
    • 1

    效果展示——

    代码展示——

    import requests
    from lxml import etree
    
    url = "https://www.biduo.cc/biquge/40_40847/"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
    }
    
    class Spider(object):
        def detail_request(self):
            # 1. 请求目录拿到HTML数据,抽取章名、章链接
            response = requests.get(url,headers=headers)
            # print(response.content.decode('gbk'))
            html = etree.HTML(response.content.decode('gbk'))  # 整理文档对象
            # print(html)
            tit_list = html.xpath('//*[@id="list"]/dl/dd/a/text()')
            url_list = html.xpath('//*[@id="list"]/dl/dd/a/@href')
            print(tit_list,url_list)
            for tit, src in zip(tit_list, url_list):
                self.content_request(tit, src)
    
        def content_request(self, tit, src):
            # 2. 请求文章拿到HTML数据,抽取文章内容并保存
            response = requests.get(url + src,headers=headers)
            html = etree.HTML(response.content.decode('gbk'))  # 整理文档对象
            content = "
    ".join(html.xpath('//*[@id="content"]/text()'))
            file_name = tit + ".txt"
            print("正在保存文件:{}".format(file_name))
            with open(file_name, "a", encoding="utf-8") as f:
                f.write(content)
    
    spider = Spider()
    spider.detail_request()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    总结

    好啦!文章到这里就正式结束,比起听歌我还是更喜欢看小说的啦!

    大家喜欢什么项目可以评论区留言哦~

    有问题或者需要视频学习的可以找我沟通哈??

    完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

    ??往期推荐阅读——

    项目0.1【Python爬虫系列】Python爬虫入门并不难,甚至入门也很简单(引言)项目0.2

    项目0.3?Python爬虫入门推荐案例:学会爬虫_表情包手到擒来~

    项目0.4【Tkinter界面化小程序】用Python做一款免费音乐下载器、无广告无弹窗、清爽超流畅哦

    项目0.5【Python爬虫系列】浅尝一下爬虫40例实战教程+源代码【基础+进阶】

    项目0.6【Python爬虫实战】使用Selenium爬某音乐歌曲及评论信息啦~

    ??文章汇总——

    Python文章合集 | (入门到实战、游戏、Turtle、案例等)

    (文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    PostgreSQL、KingBase 数据库 ORDER BY LIMIT 查询缓慢案例
    vue3怎么获取el-form的元素节点
    vue获取file文件的宽高等属性
    【Electron+Vue】Error: error:0308010C:digital envelope routines::unsupported
    [MQ] MQ的应用场景及Docker安装RabbitMQ
    ssm信息安全资讯网站毕业设计-附源码191651
    EasyExcel的使用(包含动态表头)
    我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)
    C语言PTA练习题(期末考试成绩排名,新生舞会,约瑟夫游戏(序号+姓名+密码),排队点名)
    手机照片备份方案Immich(修订版)
  • 原文地址:https://blog.csdn.net/m0_67403076/article/details/126080650
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号