学习一下思路:
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%免费,只求点赞+关注】
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点的汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python基础学习视频
路线对应学习视频
还有很多适合0基础入门的学习视频
3、Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
4、面试资料
如果有想法去找工作的朋友,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5、Python外包渠道
而且学会Python以后,还可以在各大外包平台接需求,各种外包的渠道+外包的注意事项+如何和客户沟通,我都整理成文档了。
保存图片微信扫描下方 CSDN官方认证 二维码免费领取【保证100%免费】
本文参考 https://www.cnblogs.com/demo-day/p/17853140.html,如有侵权,请联系删除。
标签:etree,Python,response,url,源码,requests,源代码,笔趣 From: https://blog.csdn.net/weixin_44080395/article/details/140376507