Wikin 发表于 2019-2-28 13:46

python试炼,爬了起点的非vip小说,打包了一下

本帖最后由 Wikin 于 2019-3-1 22:29 编辑

首先献上代码


print('''---------注明------------
小说编码:是起点小说打开某部作品时的网址位置的那一串数字
章节数:输入适当的数字,是从第一章到你输入的递增获取,不能从中间开始          (实际==懒得弄了....)
    vip章节不可获取(获取下来的不完整)
保存路径:请在本地计算机中的某个位置将地址栏的位置进行复制粘贴操作即可
闲戏提醒您:
    代码千万条,我说第一条
    输入不规范,软件必玩完
--------------------------''')
headpools = [
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60',
    'Opera/8.0 (Windows NT 5.1; U; en)',
    'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50',
    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)',
    'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36'
]
import urllib.request,re,random

def ua():
    a = random.choice(headpools)
    user_agen = ('User-Agent',a)
    ua_1 = urllib.request.build_opener()
    ua_1.add_handlers =
    urllib.request.install_opener(ua_1)

for i in range(3):
    code = input('请输入起点小说编码:')
    d = input('下载章节数:')
    while True:
      try:
            d = int(d)
            break
      except:
            d = input('请输入正确下载章节数量:')
    dir = input('文件保存路径:').replace('\\',r'\\')+r'\\'
    ua()
    path = ',"cU":"(.*?)"'
    data = urllib.request.urlopen('https://read.qidian.com/ajax/book/category?_csrfToken=W3Qw76uPjNrWkGswLpkjV5faKrFYI84CMGrLiRmu&bookId='+code).read().decode('utf-8','ignore')
    screen = re.compile(path).findall(data) #筛选各个章节的网址乱码

    for i in range(d):# 循环次数,及第0-X章节
      data_1 = urllib.request.urlopen('https://read.qidian.com/chapter/'+screen).read().decode('utf-8','ignore')
      path_1 = '<div class="read-content j_readContent">(.*?)</div>'
      screen_1 = re.compile(path_1,re.S).findall(data_1) # 正文一筛选
      path_2 = '<p>\u3000\u3000'
      screen_2 = re.sub(path_2,'\n\n',screen_1) # 正文二筛选
      path_name = 'rName">(.*?)</h3>'
      name = re.compile(path_name).findall(data_1)   # 章节名筛选
      file = open(dir+name+'.txt','w')
      file.write(screen_2)
      file.close()
      print('下载完成:'+name)


然后附上打包好的小软件,没想到软件有点大= =5M


链接:https://pan.baidu.com/s/1kCW9dTgIFNmiORlHohMkWw
提取码:2pve

没有做ui(原因感觉麻烦,而且我也真的不会- -)所以界面很---cmd...将就着玩吧

还有一点就是代码中提醒的不规范内容,请一定要规范输入,不然真的是会崩溃的,虽然没啥大问题- -   可能吧

求大佬来喷我!!我要进步,我要在一片喷声中进步,




说明下:百度网盘里放的是代码打包的小软件,软件非vip不能获取!下载章节数输入的数量超出应有章节数会致错,小说编码不对会致错,文件保存路径不存在会致错
所以务必规范输入,虽然上述问题均可被try掉,但是没必要,个人用的怎么简单怎么来对吧。


代码改进(补充):
screen_2 = re.sub(path_2,'\n\n    ',screen_1[0]) # 正文二筛选这个位置的\n\n改为\n\n    ,后面有4个空格这样生成的文件每段都会有空两格的样式,he样看会比较适合大家吧----------------------------------------------------对原本的以下代码      file.write(screen_2)
      file.close()
      print('下载完成:' + name)更改为以下代码。      path_book = '<title>(.*?)_'
      screen_book = re.compile(path_book).findall(data_1) # 书名筛选
      file = open(dir+screen_book+'.txt','a')
      file.write('\n'+screen_name+screen_2)
      file.close()
    print('下载完成:'+screen_book)以此满足15楼同学!!代码更改后,创建的文件名为书名而非章节名,只会创建一个txt文件,然后把所有的后续章节追加到该文件。------------------------------------------------------file.write(name[0]+screen_2)这个位置的写入加上章节名称,满足30楼同学

另外:非常欢迎各位同学继续指点内容,看我能不能满足各位同学咯❀❀❀❀

Wikin 发表于 2019-5-18 08:26

zyc183369 发表于 2019-5-14 15:49
楼主是怎么打包成软件的    求教

就是一个模块,百度一下把,有点忘了。只记得很简单的

Wikin 发表于 2019-2-28 15:29

jusir7 发表于 2019-2-28 15:23
感谢老铁,虽然没看懂,但在学习中

我之前就学习了python的基础
然后这几天才开始摸索爬虫,我觉得不是很难,就是一个url获取数字筛选一下就能出来自己想要的内容,觉得是比较简单的,难的还没开始2333333333333333333

Wikin 发表于 2019-2-28 13:49

作为一个不受人关注的小天使,我要学会自己打破寂静01101010001110010

中国上海 发表于 2019-2-28 13:55

学以致用,楼主666

Wikin 发表于 2019-2-28 13:56

中国上海 发表于 2019-2-28 13:55
学以致用,楼主666

不吐点槽么,我是来求吐槽的,吐槽使人进步233333333333

变得很有钱 发表于 2019-2-28 14:02

能爬VIP的小说吗?哈哈

西门一笑 发表于 2019-2-28 14:03

先下来试试

小屎球 发表于 2019-2-28 14:04

ua其实不用变化的这么勤快

时空之外 发表于 2019-2-28 14:08

嗯,不错不错,学习了

Wikin 发表于 2019-2-28 14:13

小屎球 发表于 2019-2-28 14:04
ua其实不用变化的这么勤快

没有变的勤快,只是爬一部的时候换一下而已

Wikin 发表于 2019-2-28 14:14

变得很有钱 发表于 2019-2-28 14:02
能爬VIP的小说吗?哈哈

标题已经替我回答了哦!!!
页: [1] 2 3 4 5 6
查看完整版本: python试炼,爬了起点的非vip小说,打包了一下