Python3爬取小说《昆仑》
来源:互联网 发布:js计算购物车总金额 编辑:程序博客网 时间:2024/04/26 23:10
最近迷上小说,网上下载下来,发现章节缺少,重复等问题。严重影响了阅读体验,决定自己学着自己写代码爬一本小说来看。
武侠小说《昆仑》
第一章网址: http://www.kanunu8.com/wuxia/201102/1718/38407.html
最后一章网址: http://www.kanunu8.com/wuxia/201102/1718/38506.html
talk is cheap, show your code!
# -*- coding: utf-8 -*-# 第一行注释很重要,没有的话出现汉字会报错"""Created on Thu Mar 16 21:27:59 2017@author: fangding"""#导入模块import requestsimport reimport urllib.request as requestfrom bs4 import BeautifulSoupcount_error = [] #记录无效的网址def setSrr(url): #判断网址是否有效,如果无效就打印错误并返回。 if(requests.get(url).status_code == 404): print('error') global count_error count_error.append(url) #把错误网址加入到列表 return [] print('开始下载……') l = [] #定义列表用来保存小说内容 html = request.urlopen(url).read() #读取网页中所有的内容 soup = BeautifulSoup(html) item = soup.findAll('h2') #h2里面是章节标题 #这一步的根据是查看网站源码,找到所需要爬去的内容 print('this......', str(item)) #打印章节标题处的源码 title = re.match(r'.*<h2><font color="#dc143c">(.*)</font></h2>.*', str(item) ,re.M|re.I) #用正则表达式提取出章节标题 print('title:', title.group(1)) #打印标题,看是否正确 l.append(title.group(1)) #标题加入到列表 #提取本章节小说内容部分源码,然后剔除源码部分<p>和</p> strings = soup.findAll('p')[0].__str__().strip('<p>').strip('</p>') #print(strings) ''' a = True for string in strings: st = string.__str__() if a==True: print(st) a = False if(len(st.split('<br/>')) <= 2): pass l.append(st) print(len(l)) print(l[0]) ''' #提取出来的字符串按段落切分,然后加到列表中 l += map(lambda x: x.rstrip(), strings.split('<br/>')) #返回爬去到的内容 return l#内容写到文件上def setDoc(l, file): if len(l) < 2: return #追加方式打开文件,并写入文件。 with open(file, 'a', encoding='utf-8') as f: for i in l: f.write('\t' + i) f.write('\n')def setNewUrl(): urls = [] #所有要爬取的网址 #《昆仑》中第一章和最后一章网址数字的差是109,所以有110个网址,生成网址列表返回。 for s in range(0, 110): url = "http://www.kanunu8.com/wuxia/201102/1718/" + str(38407 + s) + ".html" urls.append(url) return urlsif __name__ == '__main__': urls = setNewUrl() file = '昆仑3.txt' #setSrr(urls[0]) #爬取每一个网址里面的内容 for url in urls: l = setSrr(url) setDoc(l, file) #打印不存在的网址数量和网址 print(len(count_error)) print(count_error) #最后发现110个网址,有30个无法访问,《昆仑》正好80章。
一个简单的小说爬虫完成了。
刚学写爬虫,虽然觉得简单,但是高质量,鲁棒性强的爬虫还是不容易。
写的时候一些测试代码都删除了。遇到问题要google,而且stackoverflow是非常好的,一般问题都会有。多看看官网就解决了。
1 0
- Python3爬取小说《昆仑》
- python3.5爬虫完成笔趣阁小说的爬取
- Python3网络爬虫(七):使用Beautiful Soup爬取小说
- Python3网络爬虫(二):使用Beautiful Soup爬取小说
- Python3网络爬虫:使用Beautiful Soup爬取小说
- Python爬取小说
- 爬取起点小说
- python爬取小说
- requests爬取小说
- python3中使用requests模块爬取小说入mongo库
- 运用python3 爬取盗版小说——一个最简单的爬虫
- Python 爬取小说(诛仙)
- 练:python爬取小说
- scrapy实例 ----- 爬取小说
- python爬取某一小说
- 爬取小说网站小说信息以及内容
- Python3爬取图片
- 爬虫第五战 scrapy小说爬取
- 四平方和
- java基础五(方法;数组)
- Windows 10 很快变得更安全
- 原码, 反码, 补码 详解
- CodeForces 672D (思维+二分)
- Python3爬取小说《昆仑》
- Linked list 总结
- 2017年华为实习编程题
- Call to master/*:9000 failed on connection exception: java.net.ConnectException: Conne 错误解决
- 多线程_生产者消费者问题描述图
- Ngrok穿透工具的使用
- POJ 2976 Dropping tests
- 111. Minimum Depth of Binary Tree
- MVP模式在Android项目中的使用