吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12815|回复: 92
收起左侧

[Python 转载] 新手初写python爬虫—— 一篇小说

[复制链接]
luoluoovo 发表于 2018-6-25 14:44
本帖最后由 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]+" 已存在,请务重复操作")

就只能写到这样了,如果还有改进我还会发出来的!(爬多本书)

效果图

效果图

效果图

效果图

免费评分

参与人数 11吾爱币 +9 热心值 +10 收起 理由
jishengwen + 1 热心回复!
yeming + 1 我很赞同!
yedos + 1 热心回复!
nj19 + 1 + 1 谢谢@Thanks!
十载 + 1 + 1 我很赞同!
smallpox + 1 遮天、、
evilkid + 1 + 1 谢谢@Thanks!
zheshen + 1 + 1 我很赞同!
wulin42851 + 1 + 1 用心讨论,共获提升!
wushaominkk + 2 + 1 继续加油,以后你就是大神!
Sunshin + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| luoluoovo 发表于 2018-6-25 15:06
qq353324582 发表于 2018-6-25 15:05
只有我想问这是什么小说么 看名字有点像盗墓笔记 喜欢的类型

圣墟,我最近在看!盗墓笔记我也很喜欢
 楼主| luoluoovo 发表于 2018-8-30 09:19
xiao9640 发表于 2018-8-30 09:15
那些要订阅的网站要怎么爬?

找接口爬,如果需要登陆就模拟登陆

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiao9640 + 1 + 1 谢谢@Thanks!

查看全部评分

小不点吃鱼 发表于 2018-6-25 14:58
qq353324582 发表于 2018-6-25 15:05
只有我想问这是什么小说么 看名字有点像盗墓笔记 喜欢的类型
Do_zh 发表于 2018-6-25 15:06
路过支持一下。
小小超 发表于 2018-6-25 16:09
辰东的肾虚
影子无爱 发表于 2018-6-25 16:29
爬的起点?起点有收费,可以爬一写免费的网站
等了快半年 发表于 2018-6-25 16:29
很好,很强大
410791007 发表于 2018-6-25 16:41
这个要怎么用?
 楼主| luoluoovo 发表于 2018-6-25 16:44
下载python,然后复制保存后缀名为.py 就能运行了,我这里只是简单的爬了一下起点的,把小说链接和章节数换一下就行了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表