声明:爬虫为学习使用,请各位同学务必不要对当放网站或i服务器造成伤害。务必不要写死循环。
-
详细思路参照代码注释:
如下:网址无任何规律,但是页面有一个下一页。那是要抓到下一页的地址就能把小说全部抓取。
-
from bs4 import BeautifulSoup
import urllib.request
import re
def down(url, num):
# 获取网页
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8') # 编码格式gb2312,utf-8,GBK
html_string = str(html) # 转换成string,可以直接向数据库添加
soup = BeautifulSoup(html_string, "html.parser") # 解析网页标签
# 获取小说标题
try:
# 匹配抓取区域
pid1 = str(soup.findAll('h3', {"class": "j_chapterName"})[0])
# 清除html标签
pattern = repile(r'<[^>]+>', re.S)
result1 = pattern.sub('', pid1)
# 将抓取区域保存至txt文件
fh = open(name + '.txt', 'a', encoding='utf-8') # 制定txt编码,避免中文编码解析报错。a可以持续写入文件,w每次会覆盖之前的内容
fh.write("\n" + result1)
fh.close()
print("标题页数=" + str(num) + "标题写入完成")
pass
except:
print("标题报错页数=" + str(num))
pass
# 获取小说内容
try:
# 匹配抓取区域
pid2 = str(soup.findAll('div', {"class": "read-content j_readContent"})[0])
# 清除html标签
pattern2 = repile(r'<[^>]+>', re.S)
result2 = pattern2.sub('', pid2)
# 将抓取区域保存至txt文件
fh = open(name + '.txt', 'a', encoding='utf-8') # 制定txt编码,避免中文编码解析报错。a可以持续写入文件,w每次会覆盖之前的内容
fh.write("\n" + result2)
fh.close()
print("页数=" + str(num) + "内容写入完成")
except:
print("内容报错页数=" + str(num))
pass
# 获取下一页的链接
try:
pid = soup.findAll('a', {"id": "j_chapterNext"})[0]
next_a = "https:" + pid['href']
num += 1
# global timer # 无限setInterval模式
# timer = threading.Timer(0.5, down(next_a, num)) # 延时0秒
# timer.start()
down(next_a, num) # 下一页
# print(next_a)
print("自动执行下一页=" + num + str(next_a))
pass
except:
print("无下一页,抓取完成。")
pass
pass
# 小说信息
name = "凤策长安-文字版" # 小说书名
info_class = "连载中,古代言情,古典架空,17.82万字" # 小说类别
info_detail = "凤轻 著。狐狸窝系列之二看血狐女神如何叱咤乱世!别人穿越是宅斗宫斗打脸虐渣,迎娶皇子王爷走上人生巅峰。楚凌穿越是逃命、逃命、还是逃命!" # 小说简介
info_source = "来源:https://www.readnovel/book/11908179003210301#Catalog" # 小说目录地址
# 写入小说信息
fh = open(name + '.txt', 'a', encoding='utf-8')
fh.write("《" + name + "》" + " || " + info_class + " || " + info_detail + " || " + info_source + "\n\n")
fh.close()
down("https://www.readnovel/chapter/11908179003210301/31965775208355765", 1) # 第一页
-
-
更多推荐
【Python3爬虫-爬小说】爬取某小说网小说2/2--利用下一页抓
发布评论