使用Python爬虫整理小说网资源-自学

第一次接触python,原本C语言的习惯使得我还不是很适应python的语法风格。希望读者能够给出建议。

相关的入门指导来自以下的网址:https://blog.csdn.net/c406495762/article/details/78123502编者的文章很用心,好评。

下面是本次自学的详细说明:

----->确认目标:我选择一个不是很出名的小说网,之所以这么做,是因为一些大网站上一般都有一些反爬虫机制,作为一只弱鸡,还是选个容易上手的小网站。

->穿越小说网->《妖界之门》:http://www.15kxs.com/cbbook_22000/->这是章节汇总

 

点开第一章:http://www.15kxs.com/cbbook_22000/1.html 对比两个网址再多点开几个网页就很容易发现URL中的规律。但是这里为了更好的熟悉相关代码,我决定进行如下操作:

 

在章节汇总的网页上提取各个章节的网址并逐一请求,清洗网页源代码得到文章,并将文章汇总到本地的txt文件中。

目标是提取<a>中的“href=”的地址

下面是Python代码

 1 # -*- coding:UTF-8 -*-
 2 from bs4 import BeautifulSoup
 3 import requests
 4 filename = 'novel.txt'
 5 
 6 if __name__ == "__main__":
 7     aim = "http://www.15kxs.com/cbbook_22000/"
 8     cyc = requests.get(aim)
 9     psd = cyc.text
10     cnt = BeautifulSoup(psd,features="html.parser")
11     clc = cnt.find_all('a')
12     first = 0#在实验过程中发现章节网页中<a>的所有选项中提出的网址不仅仅包括着小说页面,对于其他页面进行筛选
13     for haim in clc:
14         link = haim.get('href')
15         lenth = len(link)
16         if first>2 and lenth!=0 and link[0]=='/':
17             """拿到了每一个章节的链接尾地址"""
18             urlaim="http://www.15kxs.com"+link
19             request_get = requests.get(urlaim)
20             html = request_get.text
21             ctm = BeautifulSoup(html,features="html.parser")
22             tex = ctm.find_all('div',id='BookText')
23             result = tex[0].text.replace('\xa0','')#编码格式是一个难点,能够打印到屏幕上的字符不一定能写入文件
24             with open(filename,'a',encoding='utf-8') as file_object:
25                 file_object.write(result)
26         first = first+1#用于计算数量
27         print(str(first)+" is ok")
28     print("all above is ok")

效果如下:

表示效果还可以

唯一不足的是:抽取速度有些慢,5分钟内只能整理110章节左右

posted @ 2020-01-19 16:15  SavenNeer  阅读(470)  评论(0编辑  收藏  举报