爬取小说目录和章节内容,并将章节内容下载到本地txt文件中。
2 开发环境及准备工作开发环境:Python3和PyCharm;
准备工作:安装requests库和beautifulsoup4库。
在PyCharm中安装第三方库,具体操作见下图:
在搜索框中分别输入requests和beautifulsoup4进行安装。
注意:要选择beautifulsoup4,而不是BeautifulSoup,因为BeautifulSoup对应的是Python2的开发环境,Python3对应的则是beautifulsoup4。
3 网站介绍及分析以免费小说全文阅读网站(http://www.quanwenyuedu.io/)为例,爬取该网站上面的小说。通过快捷键F12,可以调出当前网页的源码信息,分析相关源码。
首先看小说目录页面,通过点击蓝色边框内的箭头,再点击左侧页面中要了解的信息,在右侧就会出现相关的源码信息。
下面看章节内容页面,发现小说具体章节内容在代码<div class="articlebody" id="content">......</div>中。
4 编码思路1) 提供小说目录页的url;
2) 爬取目录页面信息;
3) 提取目录页面中小说的名称、作者、具体章节的名称和网址信息;
4) 根据提取到的章节网址(一般为相对路径网址),结合目录页网址进行分析,合成绝对路径的章节网址;
5) 爬取小说章节网页内的正文内容,将其保存到本地txt文件中;
6) 循环小说章节网址,依次爬取下载保存到本地。
5 代码实现完整代码如下:
# 爬取小说 v1.0
import requests
from bs4 import BeautifulSoup
import time
url = "http://www.quanwenyuedu.io/n/zhetian/xiaoshuo.html"
# 爬取url网址内容
def get_url(url):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0",
"Accept":"text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate, sdch",
"Accept-Language":"zh-CN,zh;q=0.8",
"Cache-Control":"max-age=0",
"Connection":"keep-alive"}
r = requests.get(url,headers = headers)
soup = BeautifulSoup(r.text,"html.parser")
return soup
# 获取小说名称和作者
soup = get_url(url)
title = soup.h1.text
author = soup.find_all("p")[1].text[3:]
chapter_list = soup.find_all("li")
for i in chapter_list:
# 获取小说章节名称和网址
i_url = i.a.get("href")
chapter_url = url[:-13] i_url
chapter_name = i.text
# 获取小说章节内容
chapter_soup = get_url(chapter_url)
content = chapter_soup.find_all("p")
# 将章节内容写入txt文件
print(chapter_name " 正在下载......")
for c in content:
with open(title "_" author ".txt","a") as f:
f.write(c.text "\n")
print(chapter_name " 下载完成")
time.sleep(2)
代码运行效果如下:
6 代码问题汇总1) 在调试代码爬取网站信息的过程中,会出现爬取不到内容的情况,是由网站反爬虫设计导致的结果,临时解决办法是在控制面板中,先禁用本地连接再启用本地连接,即断网再联网,可暂时避免;
2) 下载的小说txt文件中,前面一百多章节内容无问题,后面章节内容则出现"您无权查看此目录或页面。"的内容,也是网址反爬虫设计导致的结果。
解决思路:(尚未尝试,以待试验)
7 相关学习知识点
1) requests库:官方文档https://requests.readthedocs.io/en/master/
2) BeautifulSoup库:官方文档
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
3) 代码注释
4) 多行一起缩进
选中代码,按tap键。
5) 文件读写代码
with open("data.txt","a") as f:
f.write(c.text "\n")
8 结束语
本次代码只是实现了简单的爬取下载功能,离真正无问题爬取小说下载还有一段路要走,将此次编码的过程及问题分享出来给大家,供初学者参考。
对于上述出现的问题,有大神路过的可以指点一下,不胜感激。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved