个人学习,笔记记录
链接内容为点进去的小说的第一章节内容,而F12代码查看里面小说内容在content这个类里面,主要内容在p中,题目在title_txtbox中。
切换下一章节,在nextchapter这个类中
链接为小说第一章内容,我们查阅下一章为点击下一章按钮进行跳转,据此我们需要准备的方法分解为:
并非真实下载,只是加到缓存中
# 准备访问请求头,对应F12查看自己的请求头信息,User-Agent就够了,如有其他需要增加即可 headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36', } #下载单页的方法 def download_single_page(url): # 用requests.get()方法以字符串的形式储存到url_page变量中 url_page=requests.get(url,headers=headers) # 随意两个字段,利用 re.findall()方法拆出标题和内容,“(.*?)”这个内容为里面为保留的内容,前后为那两个字符之间 a =re.findall('<div class="title_txtbox">(.*?)</div>',url_page.text) b =re.findall('<p>(.*?)</p>',url_page.text) # 准备书写到电脑文本里的内容 txt='' for i in b: txt=txt+i+'\n' txtf=url+'\n'+a[0] + '\n'+txt return txtf,a
为批量下载方法做准备,传入第一页链接与数量参数,利用正则表达式与简单循环获得各个章节链接地址,返回到一个链接地址列表中
def url_page(url_frist,n): i = 1 url_list = [url_frist] while i < n: url_page = requests.get(url_frist, headers=headers) url1=re.findall('<a href="(.*?)" class="nextchapter"',url_page.text) print(url1[0]+r'已加入下载队列......') url_list.append(url1[0]) url_frist=url1[0] i += 1 print(r'''"\@_"\@_"\@_所有队列已准备完成"\@_"\@_"\@_''') return url_list
利用os模块,在指定目录下,将标题跟文件写入,这个测试储存的格式为txt
def write_file(filename,txtf,title): if not os.path.exists(filename): os.mkdir(filename) with open (filename+title[0]+'.txt','w',encoding='utf-8') as f: f.write(txtf) print(title[0]+r'''缓存已下载完成......''')
利用以上方法,通过传入准备好的文件夹地址,第一页链接与想要往后爬取的数量,进行小说批量下载
def group_page(filename,url,n): url_list= url_page(url,n) for i in url_list: txtf,a=download_single_page(i) write_file(filename,txtf,a)
我准备的文件夹是这个小说的名字,也可以随意写一个名字在上面补充识别路径没有创建的方法,中间是第一页的小说链接,下载测试下载了10章。这个是比较简易的,自己查资料的一个尝试,作为日记一样记录下来,一个学习笔记吧最近打算养成的一个习惯,后面不断的记录学习变强吧。后面的一些登录认证什么的还爬取不了,get到在记录吧
group_page('轮回神仙道\\','http://book.zongheng.com/chapter/876228/57924115.html',10)