前面使用类的方法获取了html的源代码,经过漫长且挫折的学习,终于使用类的方法获取到了单页网页的小说内容。
爬取的为斗罗大陆的小说的第三章,后面还会爬取整部小说。敬请期待。。。
# 导入第三方库
import requests
from fake_useragent import UserAgent
import re
import time
# 创建一个小说类
class Novel():
# 初始化对象,设置请求的url,请求头
def __init__(self):
self.url = 'http://www.quanshuwang.com/book/44/44683/15379612.html'
ua = UserAgent()
self.headers = {'useragent': ua.random}
# 定义得到html文本的方法
def get_html(self):
time.sleep(1)
# 网页解码方式为gbk方式解码
html = requests.get(self.url, headers = self.headers).content.decode('gbk')
return html
# 定义得到文字文本的方法
def download(self,html):
# 编写正则表达式,自带的括号要转义,否则匹配为空
paser = re.compile(r'<script type="text/javascript">style5\(\);</script>(.*?)<script type="text/javascript">style6\(\);</script></div>', re.S)
paser = re.findall(paser,html)
# 返回paser,类型为列表形式
return paser
# 定义保存文本的fangf
def save_novel(self,paser):
# 遍历列表,转换为字符串
for paser in paser:
# 替换文本中看不懂得内容为空
paser = paser.replace(' ','')
paser = paser.replace('<br />','')
# 保存文本
with open('小说.txt','w',encoding='gbk') as f:
f.write(paser)
# 定义一个运行方法
def run(self):
# 传递参数
html = self.get_html()
paser = self.download(html)
self.save_novel(paser)
# 实例化对象及调用
if __name__ == '__main__':
novel_spider = Novel()
novel_spider.run()
爬取结果: