python爬取小说《剑来》

本文介绍了一种使用Python的BeautifulSoup和正则表达式爬取网络小说的方法,详细讲解了如何解析网页源码,筛选小说正文及下一章节链接,实现整部小说的连续爬取。

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

原理

通过BeautifulSoup解析网页源码,通过正则表达式将小说正文从源码中筛选出来,根据标签取得下一章的url实现循环爬取整部小说。

思路

  1. 使用浏览器打开要爬取的网页,右键查看网页源码
  2. 分析要爬取的内容所在的标签
  3. 通过BeautifulSoup将要爬取的标签筛选出来
  4. 使用正则表达式做进一步的筛选处理

 按照上面的思路配合代码以及网页源码很快就能理解整个过程了

# 导入urllib下的request模块
import urllib.request
# 导入正则匹配包
import re
from bs4 import BeautifulSoup

# -*- encoding:utf-8 -*-

#fo = open("jianlai.txt", "w+")
#第一章的url结尾
page = '/book/17.html'
while True:
	#小说网址
	url='http://www.jianlaixiaoshuo.com'+str(page)
	try:
		#打开url
		html = urllib.request.urlopen(url).read()
		#用lxml解释器解析网页 
		webSourceCode=BeautifulSoup(html,'lxml')

	except:
		#当前网页解析失败
		print("error")
		break
	else:
		#爬取标题
		title=webSourceCode.find('h1')
		#爬取正文
		txts=webSourceCode.find('div',id='BookText')
		#删除正文的script
		[s.extract() for s in txts('script')]
		print(title.get_text())
		#打开要写入的文件
		fo = open(title.get_text()+'.txt', "w+")
		#遍历正文
		for txt in txts:
			txt=str(txt)
			#替换正文中标签
			txt=re.sub(r'<p>','',txt)
			txt=re.sub(r'</p>','',txt)
			#写入正文
			fo.write(txt)
		#取得下一章的url链接
		next=webSourceCode.find('a',rel='next')
		#到达最后一章,停止爬取
		if next is None:
			break
		page=next.get('href')
	#关闭文件
	fo.close()

爬取结果

 

 

注意

python3.7自带的lxml解析器有可能会解析失败,执行pip3 install lxml安装即可。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值