zoukankan      html  css  js  c++  java
  • python3.5爬虫完成笔趣阁小说的爬取

    内容简介:

    本文主要是利用python3.5完成了笔趣阁小说的爬虫程序存储章节txt到本地,方便阅读。

    需求:

    由于手机最近阅读笔趣阁的小说插了特别多的广告特别麻烦;所以就做了个小程序实现下文本的爬取,全部把小说爬取下来存储成txt,放到手机上阅读。

    过程:

    说做就做,本来python爬虫就比较简单,笔趣阁的模块也都是直接读取源代码就可以获取文字;所以就都读下来了。

    如果想全部存储到一个文档,对应的改动程序,让列表添加,再一次写入就行。

    附上源码:有兴趣的可以设置下对应的文件夹,就可以直接写到上面的直接os.makefiles();

    下载其它小说请注意修改 [下载到的本地目录, 书号, 起始index号]

    源码:

    import re  
    import urllib.request as request    
    from bs4 import BeautifulSoup    
    import requests  
    
    '''全局变量声明, 下载其它小说请注意修改 [下载到的本地目录, 书号, 起始index号]'''
    downLoadFile = 'F:\txt_cpxs\' ##要下载到的目录
    shuhao = '2_2970' ## 书号就是http://www.biquge.com/2_2970/2456497.html; com后面的那个。
    start, end = 2456497,100000
    
    def setSrr(url):  
        if(requests.get(url).status_code == 404):  
            print('这是个错误网址')  
            return []  
        print ('正在打开 ',url)      
     
        l  = []  
        '''''请求响应和不响应的处理'''  
        response = request.urlopen(url)  
          
        html = response.read()    
        soup = BeautifulSoup(html)  
        item = soup.findAll('h1')   
        title = re.match(r'(.*)<h1> (.*)</h1>(.*)', str(item) ,re.M|re.I).group(2)  
        l.append(title.split(' ')[0])  
        l.append(title)  
        strings = soup.findAll('div', id="content")[0];  
        for string in strings:  
            st = string.__str__()  
            if (len(st.split('<br/>')) > 1):  
                pass  
            else:  
                l.append(st)  
        return l  
    #strings.split()  
     
    #穿入字符串 写入文件;标题为l[0]  
    def setDoc(l):  
        if(len(l) < 2):  
            return  
        file_s = downLoadFile  + l[0] + '.txt'  
        file = open(file_s, 'w+', encoding='utf-8')  
        for i in l:  
            file.write('	')  
            for ii in i.split('    '):  
                file.write(ii)  
            file.write('
    ')  
     
    #开始自加数值;读取新文档;如果没有;那么跳过  
    ''''' 最开始设置为1066142,100  '''  
    def setNum(num,n):  
        l = [(num + i) for i in range(n)]  
        sl = [str(l[i]) for i in range(len(l))]  
        return sl  
          
    '''''自动产生新的url'''  
    
    '''''  自己观察到: 第一章的地址http://www.biquge.com/2_2970/2456497.html
    最后一张的地址 http://www.biquge.com/2_2970/3230837.html'''  
    def setNewUrl(sl):  
        urls = []  
        for x in sl:  
            xsr = 'http://www.biquge.com/'+ shuhao +'/'+ x +'.html'  #对应的单章html
            urls.append(xsr)  
        return urls  
     
    
    
    def setTxts(urls):  
        for url in urls:  
            setDoc(setSrr(url))
            
    print(  
    '''''
    --------------
    开始下载超品相师
    --------------
    ——actanble 手打——
    如果要下载其他的txt文件: 请修改——
    URL 和 对应的起始html的index号。
    '''  
    )  
    setTxts(setNewUrl(setNum(start, end))) 
    

    
       
    
    
  • 相关阅读:
    ssh速度慢
    ps -ef和ps aux的区别
    docker国内镜像加速
    pptpd的log整理
    docker入门2--生命周期
    docker入门1--简介、安装
    Cent7.2单用户模式
    shell中得到当下路径所有文件夹名称
    在centos 7下升级内核
    Mysql如何将一张表重复数据删除
  • 原文地址:https://www.cnblogs.com/actanble/p/6713447.html
Copyright © 2011-2022 走看看