需要转载的小伙伴转载后请注明转载的地址
需要用到的库
365好书链接:http://www.365haoshu.com/ 爬取《我以月夜寄相思》小说
首页进入到目录:http://www.365haoshu.com/Book/Chapter/List.aspx?NovelId=3026
获取小说的每个章节的名称和章节链接
打开浏览器的开发者工具,查找一个章节:如下图,找到第一章的名称和href(也就是第一章节内容页面的链接),开始写代码
from bs4 import BeautifulSoup import requests import time # 分别导入time、requests、BeautifulSoup库 url = 'http://www.365haoshu.com/Book/Chapter/' # 链接地址url,这儿url章节链接没全写出来是因为下面获取章节链接时要用到这些url req = requests.get(url+'List.aspx?NovelId=0326') # 打开章节页面, req_bf = BeautifulSoup(req.text,"html.parser") print(req_bf) # 将打开的页面以text打印出来 div = req_bf.find_all('div',class_='user-catalog-ul-li') # 分析页面,所需要的章节名和章节链接是在div标签,属性class为user-catalog-ul-li下 # 找到这个下的内容,并打印 s = [] for d in div: s.append(d.find('a')) print(s) # 获取div下面的a标签下的内容 names=[] # 存储章节名 hrefs=[] # 存储章节链接 for i in s: names.append(i.find('span').string) hrefs.append(url + i.get('href')) # 将所有的章节和章节链接存入的列表中 观察href后的链接和打开章节内容页面的链接是不完全的相同的, 所以要拼接使得浏览器能直接打开章节内容
获取到链接和章节名后打开一个章节获取文本内容;
和获取章节名方法一致,一步一步查找到内容的位置
txt = requests.get(hrefs[0]) div_bf = BeautifulSoup(txt.text,'html.parser') div = div_bf.find_all('div',class_='container user-reading-online pos-rel') #print(div) ps = BeautifulSoup(str(div),"html.parser") p=ps.find_all('p',class_='p-content') print(p) txt=[] for i in p: txt.append(i.string+'\n') print(txt)
获取单一章节完成
接下来整理代码,获取整个小说的内容,代码如下:
# --*-- coding=utf-8 --*-- from bs4 import BeautifulSoup import requests import time class spiderstory(object): def __init__(self): # 初始化 self.url = 'http://www.365haoshu.com/Book/Chapter/' self.names = [] # 存放章节名 self.hrefs = [] # 存放章节链接 def get_urlAndName(self): '''获取章节名和章节链接''' req = requests.get(url=self.url+'List.aspx?NovelId=0326') # 获取章节目录页面 time.sleep(1) # 等待1秒 div_bf = BeautifulSoup(req.text,"html.parser") # req后面跟text和html都行 div = div_bf.find_all('div', class_='user-catalog-ul-li') # 查找内容,标签为div,属性为class='user-catalog-ul-li' a_bf = BeautifulSoup(str(div)) a = a_bf.find_all('a') # # 查找内容,标签为a for i in a: self.names.append(i.find('span').string) # 获取内容直接string就行 self.hrefs.append(self.url + i.get('href')) # 获取链接 def get_text(self,url): '''获取章节内容''' req = requests.get(url=url) div_bf = BeautifulSoup(req.text,"html.parser") div = div_bf.find_all('div', class_='container user-reading-online pos-rel') # 查找内容 ps = BeautifulSoup(str(div), "html.parser") p = ps.find_all('p', class_='p-content') text = [] for each in p: text.append(each.string) print(text) return text # 将获得的内容返回 def writer(self, name, path, text): '''写入text文档中''' with open(path, 'a', encoding='utf-8') as f: f.write(name + '\n') f.writelines(text) f.write('\n\n') if __name__ == "__main__": # 运行入口 s = spiderstory() s.get_urlAndName() le = len(s.names) for i in range(le): # 利用for循环获得所有的内容 name = s.names[i] text = str(s.get_text(s.hrefs[i])) s.writer(name,"我以月夜寄相思.txt",text) print('下载完毕!!!')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Python实现爬取逐浪小说的方法,包括了Python实现爬取逐浪小说的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现爬取逐浪小说的方法。分享给大家供大家参考。具体分析如下: 本人喜欢在网上看小说,一直使用的是小说下载阅读器,可以自动从网上下载想看的小说到本地,比较方便。最近在学习Python的爬虫,受此启发,突然就想到写一个爬取小说内容的脚本玩玩。于是
本文向大家介绍Python下载网络小说实例代码,包括了Python下载网络小说实例代码的使用技巧和注意事项,需要的朋友参考一下 看网络小说一般会攒上一波,然后导入Kindle里面去看,但是攒的多了,机械的Ctrl+C和Ctrl+V实在是OUT,所以就出现了此文。 其实Python我也是小白,用它的目的主要是它强大文本处理能力和网络支持,以及许多好用的库,不需要自己造轮子。而且真心比C方便啊(真是用
本文向大家介绍Python爬虫爬取美剧网站的实现代码,包括了Python爬虫爬取美剧网站的实现代码的使用技巧和注意事项,需要的朋友参考一下 一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了。但是,作为一个宅diao的我又怎甘心没剧追呢,所以网上随便查了一下就找到一个能用迅雷
本文向大家介绍PHP实现爬虫爬取图片代码实例,包括了PHP实现爬虫爬取图片代码实例的使用技巧和注意事项,需要的朋友参考一下 文字信息 我们尝试获取表的信息,这里,我们就用某校的课表来代替: 接下来我们就上代码: a.php 然后咱们就运行一下: 成功获取到课表; 图片获取 绝对链接 我们以百度图库的首页为例 b.php 然后,我们就获得了下面的页面: 相对链接 百度图库的图片的链接大部
本文向大家介绍Python Scrapy图片爬取原理及代码实例,包括了Python Scrapy图片爬取原理及代码实例的使用技巧和注意事项,需要的朋友参考一下 1.在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道 在管道文件对图片进行下载和持久化存储 2.配置文件修改 配置文件要增加IMAGES_STORE = './imgsLib'表明图片存放的路径 3.管道类的修改 原本管道类继承的
主要内容:案例简单分析,编写爬虫程序本节通过具体的爬虫程序,演示 BS4 解析库的实际应用。爬虫程序目标:下载诗词名句网( https://www.shicimingju.com/book/)《 两晋演义》小说。 关于分析网页分过程,这里不再做详细介绍了,只要通读了前面的文章,那么关于如何分析网页,此时您应该了然于胸了。其实,无论您爬取什么类型的网站,分析过程总是相似的。 案例简单分析 首先判网站属于静态网站,因此您的主要任务是分析