找回密码
 会员注册
查看: 31|回复: 0

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

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71766
发表于 2024-9-8 18:43:47 | 显示全部楼层 |阅读模式
学习一下思路:1.我们进入需要爬取到的小说界面,右键开发者工具,选中元素显示,然后找到需要爬取的小说章节模块在代码中的位置。将a标签中的文本内容复制,然后ctrl+u打开源代码ctrl+f将刚刚的文本内容复制查找是否有这个模块。(比较爽的是,刚好这里有,可以不需要去查看网络请求和script代码了)那么我们现在可以可以来获取源代码了importrequestsfromlxmlimportetree#网页网址(指向小说章节的那部分)url="https://www.bige3.cc/book/3319/"#UA伪装headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/119.0.0.0Safari/537.36"}#获取源代码请求注意参数的书写response=requests.get(url,headers=headers)#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式meta中的charsetresponse.encoding='utf-8'#赋值webCode=response.text1234567891011121314编码格式的查看方式。获取源代码之后,我们现在需要去解析一下这串源代码选中这个章节,你现在需要做的是右键->复制->复制xPath然后回到python代码中按照格式填写即可实例图复制粘贴基本成功importrequestsfromlxmlimportetree#网页网址(指向小说章节的那部分)url="https://www.bige3.cc/book/3319/"#UA伪装header={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/119.0.0.0Safari/537.36"}#获取源代码请求注意参数的书写response=requests.get(url,headers=header)#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式meta中的charsetresponse.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)12345678910111213141516171819202122232425打印后我们可以获取到这个章节对应的网页信息。我们需要的小说,所以现在我们需要解析note,通过下面的信息,我们可以发现需要的文字在一个div中的文字形式,所以直接解析获取文本即可。重复上面步骤,按照相同的代码结构进行书写。完整代码importrequestsfromlxmlimportetree#网页网址(指向小说章节的那部分)url="https://www.bige3.cc/book/3319/"#UA伪装header={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/119.0.0.0Safari/537.36"}#获取源代码请求注意参数的书写response=requests.get(url,headers=header)#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式meta中的charsetresponse.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()')fortinnoteText:withopen("小说.txt",'a',encoding='utf-8')asfile:file.write(t)file.write('\n')print("成功下载")123456789101112131415161718192021222324252627282930效果展示那么如果我需要爬取一整书籍呢?我们再来看一下目录的结构。每一章节对应的链接所在的结构都是一样的,全部存在于dl->dt->dd->a->href所以我只需要获取全部的dd标签,然后一个for循环遍历所有的dd标签,然后内部再写一个for循环,即可获取正本书籍获取整本书的代码importrequestsfromlxmlimportetree#网页网址(指向小说章节的那部分)url="https://www.bige3.cc/book/3319/"#UA伪装header={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/119.0.0.0Safari/537.36"}#获取源代码请求注意参数的书写response=requests.get(url,headers=header)#源代码的具体编码格式建议先看一下网页中的meta设置的编码格式meta中的charsetresponse.encoding='utf-8'#赋值webCode=response.text#创建一个etree对象en=etree.HTML(webCode)#获取全部的dd标签li=en.xpath('//div[@class="listmain"]//dl//dd')index=0bookLen=len(li)foriinli:#创建新的url请求try:#解析dd这里为什么不需要书写etreed对象获取呢?#因为li数组本身就是一个解析后的etree元素列表,#所以i本身就是一个etree元素,可以直接使用xpath#这里注意使用[0]xpath解析获取到的都是数组形式bookWeb=i.xpath("./a/@href")[0]newUrl="https://www.bige3.cc"+bookWebnote=requests.get(newUrl)note.encoding='utf-8'noteText=etree.HTML(note.text).xpath('//div[@id="chaptercontent"]/text()')fortinnoteText:withopen("小说.txt",'a',encoding='utf-8')asfile:file.write(t)file.write('\n')print(f"书本下载({index}/{bookLen})")index+=1except:print("章节下载失败")1234567891011121314151617181920212223242526272829303132333435363738394041关于Python技术储备学好Python不论是就业还是做副业赚钱都不错,但要学会Python还是要有一个学习规划。最后博主免费分享一份我自己正在学的全套的Python学习资料,给那些想学习Python的小伙伴们一点帮助!只希望大家能够多多点赞+关注呀!!大家可以微信扫描下方CSDN官方认证二维码领取【保证100%免费,只求点赞+关注】一、Python所有方向的学习路线Python所有方向的技术点做的整理,形成各个领域的知识点的汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。二、Python基础学习视频路线对应学习视频还有很多适合0基础入门的学习视频3、Python实战案例光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。4、面试资料如果有想法去找工作的朋友,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。5、Python外包渠道而且学会Python以后,还可以在各大外包平台接需求,各种外包的渠道+外包的注意事项+如何和客户沟通,我都整理成文档了。保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】本文参考https://www.cnblogs.com/demo-day/p/17853140.html,如有侵权,请联系删除。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 13:47 , Processed in 0.422991 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表