• python爬虫学习01--电子书爬取


    python爬虫学习01--电子书爬取

    1.获取网页信息

    import requests        #导入requests库
    '''
    获取网页信息
    '''
    if __name__ == '__main__':          #主函数入口
        target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
        req = requests.get(url=target)  #进行get请求
        req.encoding='utf-8'            #设置编码
        print(req.text)                 #打印输出
    

    2.引入BeautifulSoup对网页内容进行解析

    import requests        #导入requests库
    from bs4 import BeautifulSoup  #引入BeautifulSoup库
    
    '''
    引入BeautifulSoup对网页内容进行解析
    获取网页电子书文本信息
    '''
    if __name__ == '__main__':          #主函数入口
        target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
        req = requests.get(url=target)  #发起请求,获取html信息
        req.encoding='utf-8'            #设置编码
        html = req.text                 #将网页的html信息保存在html变量中
        bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
        texts = bs.find('div',id='content') #获取所有<div id = "content">的内容
        print(texts)                            #打印输出
    

    3.切分数据,去掉空格,提取文字

    import requests        #导入requests库
    from bs4 import BeautifulSoup  #引入BeautifulSoup库
    
    '''
    引入BeautifulSoup对网页内容进行解析
    获取网页电子书文本信息
    最后一句texts.text 是提取所有文字,然后再使用 strip 方法去掉回车,
    最后使用 split 方法根据 xa0 切分数据,因为每一段的开头,都有四个空格
    '''
    if __name__ == '__main__':          #主函数入口
        target = 'https://www.xsbiquge.com/78_78513/108078.html'#要爬取的目标地址
        req = requests.get(url=target)  #发起请求,获取html信息
        req.encoding='utf-8'            #设置编码
        html = req.text                 #将网页的html信息保存在html变量中
        bs = BeautifulSoup(html,'lxml') #使用lxml对网页信息进行解析
        texts = bs.find('div',id='content') #获取所有<div id = "content">的内容
        print(texts.text.strip().split('xa0'*4))                            #打印输出
    
    

    4.查看章节列表

    import requests        #导入requests库
    from bs4 import BeautifulSoup  #引入BeautifulSoup库
    
    '''
    查看章节列表信息
    引入BeautifulSoup对网页内容进行解析
    获取网页电子书文本信息
    
    '''
    if __name__ == '__main__':          #主函数入口
        target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
        req = requests.get(url=target)      #发起请求,获取html信息
        req.encoding='utf-8'                #设置编码
        html = req.text                     #将网页的html信息保存在html变量中
        bs = BeautifulSoup(html,'lxml')     #使用lxml对网页信息进行解析
        chapters = bs.find('div',id='list') #获取所有<div id = "list">的内容
        chapters = chapters.find_all('a')         #找到list中的a标签中的内容
        for chapter in chapters:
            print(chapter)                  #打印章节列表
    

    5.获取章节目录和章节链接

    import requests        #导入requests库
    from bs4 import BeautifulSoup  #引入BeautifulSoup库
    
    '''
    查看章节列表信息
    引入BeautifulSoup对网页内容进行解析
    获取网页电子书文本信息
    
    '''
    if __name__ == '__main__':          #主函数入口
        server = 'https://www.xsbiquge.com'
        target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
        req = requests.get(url=target)      #发起请求,获取html信息
        req.encoding='utf-8'                #设置编码
        html = req.text                     #将网页的html信息保存在html变量中
        bs = BeautifulSoup(html,'lxml')     #使用lxml对网页信息进行解析
        chapters = bs.find('div',id='list') #获取所有<div id = "list">的内容
        chapters = chapters.find_all('a')         #找到list中的a标签中的内容
        for chapter in chapters:
            url = chapter.get('href')       #获取章节链接中的href
            print("《"+chapter.string+"》")           #打印章节名字
            print(server+url)               #将电子书网站与获取到的章节连接进行拼接,得到每一个章节的链接
    

    6.整合数据,下载电子书文档

    import requests        #导入requests库
    from bs4 import BeautifulSoup  #引入BeautifulSoup库
    import time
    from tqdm import  tqdm
    
    
    '''
    查看章节列表信息
    引入BeautifulSoup对网页内容进行解析
    获取网页电子书文本信息
    
    '''
    def get_content(target):
        req = requests.get(url=target)  # 发起请求,获取html信息
        req.encoding = 'utf-8'  # 设置编码
        html = req.text  # 将网页的html信息保存在html变量中
        bf = BeautifulSoup(html, 'lxml')  # 使用lxml对网页信息进行解析
        texts = bf.find('div', id='content')  # 获取所有<div id = "content">的内容
        content = texts.text.strip().split('xa0' * 4)
        return content
    
    
    if __name__ == '__main__':          #主函数入口
        server = 'https://www.xsbiquge.com'     #电子书网站地址
        book_name = '《元尊》.txt'
        target = 'https://www.xsbiquge.com/78_78513/'#要爬取的目标地址,《元尊》的章节目录网址
        req = requests.get(url=target)      #发起请求,获取html信息
        req.encoding='utf-8'                #设置编码
        html = req.text                     #将网页的html信息保存在html变量中
        chapter_bs = BeautifulSoup(html,'lxml')     #使用lxml对网页信息进行解析
        chapters = chapter_bs.find('div',id='list') #获取所有<div id = "list">的内容
        chapters = chapters.find_all('a')         #找到list中的a标签中的内容
        for chapter in tqdm(chapters):
            chapter_name = chapter.string           #章节名字
            url = server + chapter.get('href')       #获取章节链接中的href
            content = get_content(url)
            with open(book_name,'a',encoding='utf-8') as f:
                f.write("《"+chapter_name+"》")
                f.write('
    ')
                f.write('
    '.join(content))
                f.write('
    ')
    

    ps:下载的时候可能会有点慢,下载一本书大概十几分钟,在以后学到新的方法会改善的

  • 相关阅读:
    关于MySQL中ALTER TABLE 的命令用法——SQL
    replace函数——SQL
    SQL构造一个触发器
    【视频转换】监控视频DAV转mp4
    【pyqt5+opencv】如何将大量图片合成一张图
    【OpenCV+pyqt5】视频抽帧裁剪与图片转视频
    【Caffe】生成数据之修改label
    【labelme】标注工具Trick
    【OpenCV+pyqt5】视频抽帧相关操作
    【pyqt5】Pyinstaller封装OpenCV异常
  • 原文地址:https://www.cnblogs.com/ma1998/p/13291251.html
Copyright © 2020-2023  润新知