爬取小说总结
一、 准备工作
(1) requests安装
在cmd中,使用如下指令安装requests:
pip install requests
(2) beautifulsoup的安装
pip install beautifulsoup4
(3) lxml的安装
python3.7中lxml的安装
二、 爬取第一章
目标网站:https://www.biqukan.com/38_38836/497783246.html
import requests
from bs4 import BeautifulSoup
def getOnepage(url):
r = requests.get(url) #通过requests.get方法get请求页面
r.status_code #响应状态码
html = r.text #获取爬取下来的html元素
saveText('test', html)
def saveText(title, context): #将内容通过文件保存下来,方便查看
fp = open(title+'.txt', 'a', encoding='utf-8')
fp.write(context)
fp.close()
if __name__ == '__main__':
target = 'https://www.biqukan.com/38_38836/497783246.html'
getOnepage(target)


可以看到爬取下来的hml文件已经成功保存到test.txt文件中,并且在
的标签下,唯一标签的class为’showtxt’中是小说内容,小说名称在h1标签下
下面通过beautifulsoup4,把html分解,找到所需要的标签,并获取数据
#继续改写
def getOnepage(url):
r = requests.get(url) #通过requests.get方法get请求页面
r.status_code #响应状态码
html = r.text #获取爬取下来的html元素
soup = BeautifulSoup(html, "lxml")
title = soup.find('h1').text #找到第一个h1标签
text = soup.find_all('div', class_="showtxt")#找到所有class_为showtxt的div标签
context = text[0].text
saveText(title, context)

爬取内容基本满足要求,在把小说格式改写一下就ok了
三、 爬取全套小说
观察网页可以知道,每一章节都是通过下面的网页点击进入的
那么这个连接上肯定有没章节的超链接,全部获取后,再一章一章的爬取就可以了
https://www.biqukan.com/38_38836
最后整理下代码如下
import requests
from bs4 import BeautifulSoup
def getOnepage(url):
r = requests.get(url) #通过requests.get方法get请求页面
r.status_code #响应状态码
html = r.text #获取爬取下来的html元素
soup = BeautifulSoup(html, "lxml")
title = soup.find('h1').text
text = soup.find_all('div', class_="showtxt")
context = text[0].text
saveText(title, context.replace(' ', '\n'))
def saveText(title, context): #将内容通过文件保存下来,方便查看
fp = open(title+'.txt', 'a', encoding='utf-8')
fp.write(context)
fp.close()
def getAllurl():
target = 'https://www.biqukan.com/38_38836'
r = requests.get(target)
r.encoding = 'GBK' #注意:从该网页爬取的时候发现有乱码,经确认是要使用GBK的编码格式
html = r.text
soup = BeautifulSoup(html, "lxml")
ddList = soup.find_all('dd')
for dd in ddList[0:10]:
url = target.replace('/38_38836','') + dd.find('a')['href']
getOnepage(url)
if __name__ == '__main__':
getAllurl()
爬取结果


四、 总结及改进
- [1 ]在调试过程中发现出现过乱码,主要分为以下2类
A.从网站上爬取下来存在乱码,解决方案:在requests的时候加encoding=‘GBK’
B.保存到文本的时候存在乱码,解决方案:在fp = open的时候加encoding=‘GBK’
具体使用什么编码格式,视情况而定 - [2 ] 字符串的处理不够熟练,需要加强
- [3 ]可以加入进度显式模块,更加完善,程序可视化
- [4 ]引入多进程的使用,加快爬取速度
- [5 ]待定。。。
本文总结了一个Python爬虫项目,用于爬取网络小说。首先介绍了准备工作,包括requests、beautifulsoup4和lxml的安装。接着详细描述了如何爬取小说的第一章,然后分享了如何获取并爬取整套小说的方法。最后,作者总结了项目中遇到的乱码问题及解决方案,并提出了改进方案,如字符串处理、进度显示和多进程应用。
&spm=1001.2101.3001.5002&articleId=109208760&d=1&t=3&u=51aa7521ed94438fa2dc18b83d0f3b75)
761

被折叠的 条评论
为什么被折叠?



