爬虫小说下载

本文介绍了如何使用Python的requests库和BeautifulSoup解析HTML,实现从笔趣看网站抓取并下载《斗罗大陆》小说的全部章节。通过分析HTML结构,提取章节URL和内容,最终将内容写入文件完成自动化下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫即按照一定规则,自动的抓取万维网信息的程序或脚本。



URL

爬虫是根据网页的地址来寻找网页的,也就是URL(统一资源定位符)
其一般格式为:

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

# protocol:就是指协议,如百度使用 https协议;

# hostname[:port]:指主机名(还有端口号为可选参数),一般网站默认端口号为80
# 如百度的主机名就是 www.baidu.com,这个就是服务器的地址;

# path:主机资源的具体地址,如目录和文件名等。

requsets库和简单方法

request库是一个非常强大的库,官方中文教程地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

其中的方法和说明

方法 说明
requests.request() 构造一个请求,支撑一下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML网页提交删除请求,对应于HTTP的DELETE

小说下载

介绍:笔趣看是盗版小说网站,可免费在线阅读,但不支持小说打包下载
目标:爬取笔趣小说网站的小说,打包下载下来
笔趣看:http://www.biqukan.com/

以小说《斗罗大陆》为例:首先打开第一章:
第一章的URL:http://www.biqukan.com/3_3026/1343657.html

用前面提到的requests库获取该页面的HTML信息:

if __name__ = "__main__":
    target = 'http://www.biqukan.com/3_3026/1343657.html'
    req = requests.get(url=target)
    print(req.text)

这样就获取到了页面所有的HTML信息,但其中很多内容我们并不需要,多了很多的div等的HTML标签,这些都是我们不需要的无用信息,我们只需要将其中的正文内容提取出来即可。
所以在获取到了HTML信息后,要将其进行解析,提取所需要的信息。

提取的方法很多,这里用最简单的BeautifulSoup进行解析;

Chrome浏览器在页面内点击右键,选择检查,即可查看页面的HTML内容。

仔细看其中的内容,会发现正文所有的内容都在一个名为:

<d
### 使用 Python 编写下载小说爬虫 要实现一个能够下载小说爬虫程序,可以按照以下方式构建完整的解决方案。以下是具体的技术细节以及代码示例。 #### 技术栈 为了完成此任务,需要用到以下几个核心工具和技术: - **Requests**: 发起 HTTP 请求并获取目标网页的内容。 - **BeautifulSoup (BS4)**: 解析 HTML 文档结构,提取所需的信息。 - 文件操作模块 (`open`): 将抓取的小说内容保存至本地文件。 --- #### 实现过程详解 ##### 1. 获取目标网站的页面源码 通过 `requests.get()` 方法发起 GET 请求,获取目标网页的 HTML 数据。需要注意的是,在发送请求时最好设置 User-Agent 头部信息,模拟浏览器行为以避免被服务器拒绝访问[^2]。 ```python import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } url = "https://example-novel-site.com" response = requests.get(url, headers=headers) if response.status_code == 200: html_content = response.text else: raise Exception(f"Failed to load page {url}, status code: {response.status_code}") ``` ##### 2. 提取章节列表及其链接 利用 Beautiful Soup 对 HTML 进行解析,找到所有的章节标题和对应的 URL 链接。通常情况下,这些信息会嵌套在 `<a>` 标签或者特定的容器标签中[^4]。 ```python soup = BeautifulSoup(html_content, 'html.parser') chapter_list = [] for a_tag in soup.select('div.chapter-list a'): chapter_title = a_tag.text.strip() chapter_url = a_tag['href'] full_chapter_url = f"https://example-novel-site.com{chapter_url}" # 补全相对路径 chapter_list.append((chapter_title, full_chapter_url)) ``` ##### 3. 下载单个章节的内容 对于每个章节的详细页面,重复上述步骤中的第一步,即再次调用 `requests.get()` 来加载该页面,并从中抽取正文部分。假设正文字体位于某个具有唯一类名的选择器下,则可以通过 BS4 的 `.select_one()` 或者 `.find()` 函数定位到它[^3]。 ```python def fetch_chapter_content(chapter_url): resp = requests.get(chapter_url, headers=headers) if resp.status_code != 200: return None ch_soup = BeautifulSoup(resp.text, 'html.parser') content_div = ch_soup.find('div', class_='content') # 假设这是存放文章主体的地方 paragraphs = [p.text.strip() for p in content_div.find_all('p')] return '\n'.join(paragraphs) ``` ##### 4. 存储所有章节到单一文件 最后一步就是遍历之前收集好的章节清单,依次读入它们的文字资料再逐条追加记录进同一个电子书籍文档里去。 ```python output_file = 'novel.txt' with open(output_file, mode='w', encoding='utf-8') as file_obj: for title, url in chapter_list[:10]: # 只处理前十个作为演示用途 print(f'Processing Chapter "{title}"...') try: text = fetch_chapter_content(url) if not text: continue file_obj.write(title + "\n\n") file_obj.write(text + "\n\n---\n\n") except Exception as e: print(f"Error processing chapter '{title}':", str(e)) print("All chapters have been saved successfully!") ``` --- #### 注意事项 尽管上面给出了一种通用的方法论框架指导如何创建自己的简易型网络文学作品采集脚本;但在实际应用过程中还需要考虑更多因素比如反爬机制规避策略、异常情况妥善处置等方面的问题[^1]^。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值