首页 > 编程语言 >Python爬虫抓取笔趣阁小说(含源码)

Python爬虫抓取笔趣阁小说(含源码)

时间:2024-07-12 13:29:34浏览次数:13  
标签:etree Python response url 源码 requests 源代码 笔趣

学习一下思路:

1.我们进入需要爬取到的小说界面,右键开发者工具 ,选中元素显示,然后找到需要爬取的小说章节模块在代码中的位置。
在这里插入图片描述
将a标签中的文本内容复制,然后ctrl+u打开源代码 ctrl+f将刚刚的文本内容复制查找是否有这个模块。(比较爽的是,刚好这里有,可以不需要去查看网络请求和script代码了)
在这里插入图片描述
那么我们现在可以可以来获取源代码了

import requests
from lxml import etree
# 网页网址(指向小说章节的那部分)
url = "https://www.bige3.cc/book/3319/"
#UA伪装
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
#获取源代码请求 注意参数的书写
response = requests.get(url,headers=headers)
#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式 meta中的charset
response.encoding = 'utf-8'
#赋值
webCode = response.text

编码格式的查看方式。
在这里插入图片描述
获取源代码之后,我们现在需要去解析一下这串源代码

选中这个章节,你现在需要做的是右键->复制->复制xPath 然后回到python代码中按照格式填写即可

实例图
在这里插入图片描述
复制粘贴基本成功

import requests
from lxml import etree
# 网页网址(指向小说章节的那部分)
url = "https://www.bige3.cc/book/3319/"
#UA伪装
header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
#获取源代码请求 注意参数的书写
response = requests.get(url,headers=header)
#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式 meta中的charset
response.encoding = 'utf-8'
#赋值
webCode = response.text
#创建一个etree对象
en = etree.HTML(webCode)
li = en.xpath('//div[@class = "listmain"]/dl/dd[1]/a//@href')

#创建新的url请求

print(li)
newUrl = "https://www.bige3.cc"+li[0]
print(newUrl)
note =  requests.get(newUrl)
print(note.text)

打印后我们可以获取到这个章节对应的网页信息。

我们需要的小说,所以现在我们需要解析note,通过下面的信息,我们可以发现需要的文字在一个div中的文字形式,所以直接解析获取文本即可。重复上面步骤,按照相同的代码结构进行书写。
在这里插入图片描述
完整代码

import requests
from lxml import etree
# 网页网址(指向小说章节的那部分)
url = "https://www.bige3.cc/book/3319/"
#UA伪装
header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
#获取源代码请求 注意参数的书写
response = requests.get(url,headers=header)
#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式 meta中的charset
response.encoding = 'utf-8'
#赋值
webCode = response.text
#创建一个etree对象
en = etree.HTML(webCode)
li = en.xpath('//div[@class = "listmain"]/dl/dd[1]/a//@href')

#创建新的url请求

newUrl = "https://www.bige3.cc"+li[0]
note =  requests.get(newUrl)
note.encoding = 'utf-8'
noteText = etree.HTML(note.text).xpath('//div[@id="chaptercontent"]/text()')

for t in noteText:
    with open("小说.txt",'a',encoding='utf-8') as file:
        file.write(t)
        file.write('\n')
print("成功下载")

效果展示
在这里插入图片描述
那么如果我需要爬取一整书籍呢?

我们再来看一下目录的结构。每一章节对应的链接所在的结构都是一样的,全部存在于dl->dt->dd->a->href 所以我只需要获取全部的dd标签,然后一个for循环遍历所有的dd标签,然后内部再写一个for循环,即可获取正本书籍

在这里插入图片描述
获取整本书的代码

import requests
from lxml import etree
# 网页网址(指向小说章节的那部分)
url = "https://www.bige3.cc/book/3319/"
#UA伪装
header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
#获取源代码请求 注意参数的书写
response = requests.get(url,headers=header)
#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式 meta中的charset
response.encoding = 'utf-8'
#赋值
webCode = response.text
#创建一个etree对象
en = etree.HTML(webCode)
#获取全部的dd标签
li = en.xpath('//div[@class = "listmain"]//dl//dd')
index = 0
bookLen = len(li)
for i in li:
    #创建新的url请求
    try:
        # 解析dd 这里为什么不需要书写etreed对象获取呢?
        # 因为li数组本身就是一个解析后的etree元素列表,
        # 所以i本身就是一个etree元素,可以直接使用xpath

        #这里注意使用[0] xpath解析获取到的都是数组形式
        bookWeb = i.xpath("./a/@href")[0]
        newUrl = "https://www.bige3.cc"+ bookWeb
        note =  requests.get(newUrl)
        note.encoding = 'utf-8'
        noteText = etree.HTML(note.text).xpath('//div[@id="chaptercontent"]/text()')
        for t in noteText:
            with open("小说.txt",'a',encoding='utf-8') as file:
                file.write(t)
                file.write('\n')
        print(f"书本下载({index}/{bookLen})")
        index+=1
    except:
        print("章节下载失败")

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后博主免费分享一份我自己正在学的全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!只希望大家能够多多点赞+关注呀!!

大家可以微信扫描下方 CSDN官方认证 二维码领取【保证100%免费,只求点赞+关注】
Alt

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点的汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

Alt

二、Python基础学习视频

路线对应学习视频

还有很多适合0基础入门的学习视频
Alt

3、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
Alt

4、面试资料

如果有想法去找工作的朋友,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
Alt

5、Python外包渠道

而且学会Python以后,还可以在各大外包平台接需求,各种外包的渠道+外包的注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

保存图片微信扫描下方 CSDN官方认证 二维码免费领取【保证100%免费

Alt

本文参考 https://www.cnblogs.com/demo-day/p/17853140.html,如有侵权,请联系删除。

标签:etree,Python,response,url,源码,requests,源代码,笔趣
From: https://blog.csdn.net/weixin_44080395/article/details/140376507

相关文章

  • python编程实例 计算输入内容中数字、字母、空格、其它字符的数量 两种方式实现
    第一种方式为通过python自带函数实现第二种方式为通过ascii码实现点击查看代码#字符串构成,统计出字符串中#空格英文字符数字其它字符的数量'''使用自带函数a=input("请输入:")kong=0ying=0shu=0qita=0foriinrange(len(a)):if(a[i].isspace()):kong......
  • 【PYTHON】运行环境配置之安装tar.gz压缩包
    我们经常会遇到从PYPI网站下载的安装文件没有whl格式,这时我们需要安装tar.gz格式的安装文件。比如图1所示的文件类型,这时我们需要先将该压缩包解压缩得到图2。图1图2接着,我们通过win+r,再输入cmd的方式得到运行窗口如图3。图3接着,我们利用pipinstall+解压后文件夹路......
  • Adnc 源码解析
    先看 Adnc.Demo.Usr.Api解决方案varstartAssembly=System.Reflection.Assembly.GetExecutingAssembly();varstartAssemblyName=startAssembly.GetName().Name??string.Empty;varlastName=startAssemblyName.Split('.').Last();varmigrationsAssembl......
  • python爬虫案例——5行代码爬取音乐资源
    都2024年了,不会还有人在花钱用VIP下载音乐吧~每天一个小妙招,教你5行代码轻松白嫖资源小白须知电脑需配备python解释器、安装一款编程软件,例如VisualStudioCode、pycharm等VisualStudioCode官网:https://code.visualstudio.com/pycharm社区版:https://www.jetbrains.com......
  • python-小理与他的画(赛氪OJ)
    [题目描述]小理是个画家,他希望有一天他的画能让心仪的她看到。只是后来她有了他,他却只有他的画,他望着他的画,默默的发呆。可惜做题的你,画不出他画的她,所以,我们只好画点简单的画,或许有一天,你就会遇到画里她/他吗?因此我们规定画画的内容:输入一个正整数 n(n为奇数),输出高度为 n......
  • Redis数据结构—跳跃表 skiplist 实现源码分析
    Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis的数据结构非常丰富,其中跳跃表(skiplist)是一种重要的数据结构,它被用来实现有序集合(sortedsets)。跳跃表是一种概率型数据结构,它通过多层链表来实现快速的查找操作。跳跃表的结构类似于多层索引,......
  • 最新AI一站式系统源码-ChatGPT商业版系统源码,支持自定义AI智能体应用、AI绘画、AI视频
     一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、AI视频、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。......
  • 4-LinkedList底层结构和源码分析
    4-LinkedList底层结构和源码分析介绍汇总:LinkedList的全面说明LinkedList的底层操作机制LinkedList的运行重要步骤ArrayList和LinkedList比较1-LinkedList的全面说明LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复),包括null线程不安全,......
  • “好物”推荐+Xshell连接实例+使用Conda创建独立的Python环境
    目录主题:好易智算平台推荐+RTX4090DGPU实例租用演示+安装配置torch1.9.1+cuda11.1.1环境引言:算力的新时代平台介绍:技术与信任的结晶使用案例:实际使用展示创建实例开始使用连接实例(下文演示使用Xshell连接,后续传文件也有配套的sftp可以使用)sftp传文件查看服务器配置,使用C......
  • 毕业设计-基于Springboot+Vue的招生管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456200基于SpringBoot+Vue的招生管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1GwKRBbuwMiZmnxkvRN9VJg?pwd=sb......