本文共 4973 字,大约阅读时间需要 16 分钟。
笔趣看小说网站:
本站所有小说为转载作品,所有章节均由网友上传,转载至本站只是为了宣传本书让更多读者欣赏。
工具:Python3.7,PyCharm
程序所需用到的模块:requests,fake_useragent,parsel,docx,time
所使用的解析器:xpath
明确我们需要爬取哪部小说。这里我以《斗破苍穹》为例。
作者、分类、状态、字数、更新时间和简介
文章从正文卷开始,获取每一章的章节名称和链接
每一章的详情内容
""" Python爬取 https://www.biqukan.com/ 小说网的斗破苍穹小说"""import requestsfrom fake_useragent import UserAgentimport parselfrom docx import Documentimport timeclass BiQuKanDownloader(object): """ 类说明:下载《笔趣看》小说网小说《斗破苍穹》 """ def __init__(self): self.server = "https://www.biqukan.com/" self.target = "https://www.biqukan.com/3_3037/" self.file = "F:\Python\爬虫资源\斗破苍穹\斗破苍穹.docx" self.article_names = [] # 存放章节名称 self.article_urls = [] # 存放章节链接 self.article_nums = 0 # 章节数 self.headers = { "User-Agent": UserAgent().random} # 生成随机的请求头 self.doc = Document() def article_introduction(self): """ 函数说明:文章简介 :return: """ """ 请求网页 """ response = requests.get(url=self.target, headers=self.headers) response.encoding = 'gbk' html = response.text """ 解析网页 """ selector = parsel.Selector(html) article_author = selector.xpath('.//div[@class="info"]/div[@class="small"]/span[1]/text()').get() # 作者 article_type = selector.xpath('.//div[@class="info"]/div[@class="small"]/span[2]/text()').get() # 类型 article_status = selector.xpath('.//div[@class="info"]/div[@class="small"]/span[3]/text()').get() # 状态 article_docs = selector.xpath('.//div[@class="info"]/div[@class="small"]/span[4]/text()').get() # 字数 article_updateTime = selector.xpath('.//div[@class="info"]/div[@class="small"]/span[5]/text()').get() # 更新时间 article_introduction = selector.xpath('.//div[@class="info"]/div[@class="intro"]/text()[1]').get() # 简介 """ 保存到文件 """ self.doc.add_heading("小说简介", level=1) self.doc.add_paragraph(article_author) self.doc.add_paragraph(article_type) self.doc.add_paragraph(article_status) self.doc.add_paragraph(article_docs) self.doc.add_paragraph(article_updateTime) self.doc.add_paragraph(article_introduction) self.doc.save(self.file) def get_download_url(self): """ 函数说明:获取目标下载链接并解析章节名称和链接,再添加到列表中 :return: """ """ 请求网页 """ response = requests.get(url=self.target, headers=self.headers) response.encoding = 'gbk' html = response.text """ 解析网页 """ # 转化数据类型 selector = parsel.Selector(html) # 提取所有的
这里使用的gbk编码格式,是因为小说网站文章内容为gbk编码的格式
在浏览器的开发者工具控制台中输入:doucument.charset 可查看编码格式
做一个文明守法的好网民,不要爬取公民的隐私数据,不要给对方的系统带来不必要的麻烦
此篇博客仅作学习用途