爬虫练习:获取某小说网站小说内容

一、相关网站

二、查看robots.txt

三、查看小说主页面url,获取小说章节名称和href

(1).相关代码
python 复制代码
import requests
from lxml import etree

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
url = 'https://www.quanben.so/94_94335/'
response = requests.get(headers=headers,url=url)
# print(response.status_code)
result = etree.HTML(response.text)
urls = result.xpath('//div/dl/dd[position() >= 13]/a/@href')
titles = result.xpath('//div/dl/dd[position() >= 13]/a/text()')
print(urls,titles)
(2).获取的结果

四、获取每章节小说内容

(1).相关代码
python 复制代码
import requests
from lxml import etree

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
url = 'https://www.quanben.so/94_94335/67871925.html'
response = requests.get(headers=headers,url=url)
# print(response.status_code)
result = etree.HTML(response.text)
# content = result.xpath('//div[@id="content"]/br/following-sibling::text()')
"""
# 注意:这可能会返回包含所有文本节点的列表,包括换行符、空格等
texts = result.xpath('//div[@id="content"]/text()')
# 将列表中的文本节点连接成一个字符串
content = ''.join(texts).strip()  # 使用strip()去除字符串两端的空白字符

"""
# content = ''.join(result.xpath('//div[@id="content"]/text()')).strip()
content = '\n'.join(result.xpath('//div[@id="content"]/text()')).strip()
print(content)
(2).获取的结果

五、网页拼接,获取每章节小说的名称和url

(1).相关代码
python 复制代码
import requests
from lxml import etree

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
url = 'https://www.quanben.so/94_94335/'
response = requests.get(headers=headers, url=url)
result = etree.HTML(response.text)

urls = result.xpath('//div/dl/dd[position() >= 13]/a/@href')
titles = result.xpath('//div/dl/dd[position() >= 13]/a/text()')

base_url = 'https://www.quanben.so/94_94335/'

for title, url in zip(titles, urls):
    full_url = base_url + url
    print(f'{title} === {full_url}')
(2).获取的结果

六、完善代码,将获取内容保存到txt文件中

(1).相关代码
python 复制代码
import os
import time
import requests
from lxml import etree

headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
url = 'https://www.quanben.so/94_94335/'
response = requests.get(headers=headers, url=url)
result = etree.HTML(response.text)

urls = result.xpath('//div/dl/dd[position() >= 13]/a/@href')
titles = result.xpath('//div/dl/dd[position() >= 13]/a/text()')
base_url = 'https://www.quanben.so/94_94335/'

# 创建目录
directory = "神印王座II皓月当空"
if not os.path.exists(directory):
    os.makedirs(directory)

for title, url in zip(titles, urls):
    full_url = base_url + url
    response = requests.get(headers=headers, url=full_url)
    result = etree.HTML(response.text)

    content = '\n'.join(result.xpath('//div[@id="content"]/text()')).strip()
    # 将标题中的非法字符替换为下划线
    title = title.replace(':', '_').replace('?', '_')
    # 将内容写入文件
    file_name = os.path.join(directory, f"{title}.txt")
    with open(file_name, "w", encoding="utf-8") as f:
        f.write(content)

    print(f"已将 {title} 的内容写入 {file_name}")
    # 由于网站限制,每爬取一章节,睡眠2秒
    time.sleep(2)
(2).获取的结果

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 版权声明和免责声明 本博客提供的所有爬虫代码和相关内容(以下简称"内容")仅供参考和学习之用。任何使用或依赖这些内容的风险均由使用者自行承担。我(博客所有者)不对因使用这些内容而产生的任何直接或间接损失承担责任。 严禁将本博客提供的爬虫代码用于任何违法、不道德或侵犯第三方权益的活动。使用者应当遵守所有适用的法律法规,包括但不限于数据保护法、隐私权法和知识产权法。 如果您选择使用本博客的爬虫代码,您应当确保您的使用行为符合所有相关法律法规,并且不会损害任何人的合法权益。在任何情况下,我(博客所有者)均不对您的行为负责。 如果您对本声明有任何疑问,或者需要进一步的澄清,请通过我的联系方式与我联系。 |

相关推荐
j_xxx404_23 分钟前
爬虫对抗:ZLibrary反爬机制实战分析 (一) - 撕裂前端JS混淆与环境检测伪装
爬虫
小邓睡不饱耶2 小时前
东方财富网股票数据爬取实战:从接口分析到数据存储
开发语言·爬虫·python·网络爬虫
Pioneer000012 小时前
爬虫对抗:ZLibrary反爬机制实战分析
爬虫
j_xxx404_2 小时前
爬虫对抗:ZLibrary反爬机制实战分析 (二) - 破解动态请求签名与参数加密
爬虫
vx_biyesheji00012 小时前
计算机毕业设计:Python全栈图书数据挖掘与可视化看板 Django框架 爬虫 当当图书 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅
爬虫·python·机器学习·数据挖掘·django·毕业设计·课程设计
B站_计算机毕业设计之家17 小时前
计算机毕业设计:Python当当网图书数据全链路处理平台 Django框架 爬虫 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅
爬虫·python·机器学习·django·flask·pandas·课程设计
2401_8916558120 小时前
爬虫对抗:ZLibrary反爬机制实战分析的技术文章大纲
爬虫
q_354888515321 小时前
计算机毕业设计:Python当当网图书大数据分析平台 Django框架 爬虫 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅
大数据·爬虫·python·机器学习·数据分析·django·课程设计
2401_884662101 天前
爬虫对抗:ZLibrary反爬机制实战分析技术文章大纲
爬虫
CDN3601 天前
爬虫对抗:ZLibrary反爬机制实战分析及360CDN解决方案可行性论证
爬虫·网络安全