本文来源吾爱破解论坛
本帖最后由 luoluoovo 于 2018-6-27 12:23 编辑
0基础学了一星期爬虫,写出来的代码
感谢wushaominkk的教程
https://www.52pojie.cn/thread-713042-1-1.html
其中改了很多错误,最后写成这样子,在吾爱好久了,一直都是潜水的,自己写出来的第一个代码也跟大家分享一下
希望大家多多指教!有什么需要改进的希望不吝赐教!
这是刚开始练手,写的第一章的爬虫,就只能爬一章。
[Asm] 纯文本查看 复制代码
import re import urllib.request import os url="https://read.qidian.com/chapter/_AaqI-dPJJ4uTkiRw_sFYA2/eSlFKP1Chzg1" page=urllib.request.urlopen(url).read() page=page.decode('UTF-8') pachong=r'p>\u3000\u3000(.+?)<' html=re.findall(pachong,page,re.S) def mkdir(path): floder=os.path.exists(path) if not floder: os.mkdir(path) print("创建成功") else: print("文件已存在") img_path="E:/txt/" mkdir(img_path) i=0 for line in html: line = html[i] print(line) f = open(img_path + "2.txt", "a")#a代表追加模式,不覆盖 f.write(line+"\n") f.close() i = i + 1
这是后面改完的完整版,能爬一篇小说
相比于第一个代码,多了append函数
(由于论坛的符号识别问题,获取书名的过滤符号换了一下)
(发现了原来的代码重复运行就会出错,于是增加了shutil函数,如果重复运行就删除重复的操作并提醒)
[Python] 纯文本查看 复制代码
import re import urllib.request import os import shutil def mkdir(path): #创建文件夹 floder=os.path.exists(path) if not floder: os.makedirs(path) print("创建成功") else: print("文件已存在") img_path="E:/txt/txt/" mkdir(img_path) z = 0 url = [] link = "https://read.qidian.com/chapter/-hR5nsEj2z2RTIpqx7GUJA2/btHTPdR_GjzM5j8_3RRvhw2"#url为第几页就从第几页开始获取 for read in (range(0,5)):#下载几章,这里默认5章 url.append(link) #append() 方法用于在列表末尾添加新的对象。 page = urllib.request.urlopen(url[z]).read().decode('UTF-8') filter_page= r'p>\u3000\u3000(.+?)<' #小说的文本 <p> ****<p> \u3000 代表空格 html = re.findall(filter_page, page, re.S) filter_bookname = r'60c;</em>(.+?)</a>' bookname = re.findall(filter_bookname, page, re.S) filter_chaptername= r'<h3 class="j_chapterName">(.+?)</h3>' #<h3 class="j_chapterName">第4章 继任者</h3> chaptername = re.findall(filter_chaptername,page, re.S)#获取章节和章节名字 i = 0 for txt in html: line = html[i] f = open(img_path+ chaptername[0]+".txt", "a") # a代表追加模式,不覆盖 f.write(line + "\n") f.close() i = i + 1 print(chaptername[0]+" 下载完成") next = r'<a id="j_chapterNext".+?href="//(.+?)"' #<a id="j_chapterNext" href="//read.qidian.com/chapter/HZe9IzSe3h3iUReBXKVubw2/mvMfZ61JMBHM5j8_3RRvhw2" data-eid="qd_R109" >下一章</a> nextread = re.findall(next, page, re.S) b = '' link = "https://" + b.join(nextread) # 本页的下一章链接 z = z + 1 img_path2="E:/txt/"+bookname[0] c=0 if not os.path.exists(img_path2): os.rename(img_path, img_path2)#文件夹重命名 print("下载完成") else: path="E:/txt/txt/" shutil.rmtree(path) print("文件名:"+bookname[0]+" 已存在,请务重复操作")
就只能写到这样了,如果还有改进我还会发出来的!(爬多本书)
截图1529909510.png (21.01 KB, 下载次数: 8)
下载附件 保存到相册
2018-6-25 14:52 上传
效果图
截图1529909477.png (13.87 KB, 下载次数: 5)
下载附件 保存到相册
2018-6-25 14:52 上传
效果图
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: 爬虫第二篇 论坛搜软件
- 下一篇: 爬取LOL官网全套高清皮肤壁纸