zoukankan      html  css  js  c++  java
  • Python爬虫——白嫖小说最高境界!

    哈喽大家好  我是阿喵,今天也是学习爬虫的一天

    利用python写一个简单的笔趣阁爬虫,根据输入的小说网址爬取整个小说并保存到txt文件。爬虫用到了BeautifulSoup库的select方法
    结果如图所示:

    本文只用于学习爬虫


    一、网页解析

    这里以斗罗大陆小说为例 网址:
    http://www.biquge001.com/Book/2/2486/

    可以发现每章的网页地址和章节名都放在了 <"div id=list dl dd a>中的a标签中,所以利用BeautfulSoup中的select方法可以得到网址和章节名

    Tag = BeautifulSoup(getHtmlText(url), "html.parser") #这里的getHtmlText是自己写的获取html的方法
    urls = Tag.select("div #list dl dd a")
    

    然后遍历列表

    for url in urls:
        href = "http://www.biquge001.com/" + url['href']  # 字符串的拼接 拼接成正确的网址
        pageName = url.text  # 每章的章名
    

    然后每章小说的内容都存放在<div id=“content” 里 同理得

      substance = Tag.select("div #content")  # 文章的内容
    
    • 1

    最后同理在首页获取小说的名称
    <"div id = info h1>

    bookName = Tag.select("div #info h1")
    
    • 1

    二、代码填写

    1.获取Html及写入方法

    def getHtmlText(url):
        r = requests.get(url, headers=headers)
        r.encoding = r.apparent_encoding  # 编码转换
        r.raise_for_status()
        return r.text
    
    def writeIntoTxt(filename, content):
        with open(filename, "w", encoding="utf-8") as f:
            f.write(content)
            f.close()
            print(filename + "已完成")

    2.其余代码

    代码如下(示例):

    url = "http://www.biquge001.com/Book/2/2486/"
    substanceStr = ""
    bookName1 = ""
    html = getHtmlText(url)
    # 判断是否存在这个文件
    Tag = BeautifulSoup(getHtmlText(url), "html.parser")
    urls = Tag.select("div #list dl dd a")
    bookName = Tag.select("div #info h1")
    for i in bookName:
        bookName1 = i.text
    if not os.path.exists(bookName1):
        os.mkdir(bookName1)
        print(bookName1 + "创建完成")
    else:
        print("文件已创建")
    for url in urls:
        href = "http://www.biquge001.com/" + url['href']  # 字符串的拼接 拼接成正确的网址
        pageName = url.text  # 每章的章名
        path = bookName1 + "\"  # 路径
        fileName = path + url.text + ".txt"  # 文件名 = 路径 + 章节名 + ".txt"
        Tag = BeautifulSoup(getHtmlText(href), "html.parser")  # 解析每张的网页
        substance = Tag.select("div #content")  # 文章的内容
        for i in substance:
            substanceStr = i.text
        writeIntoTxt(fileName, substanceStr)
        time.sleep(1) 

    总结

    简单利用了BeautfulSoup的select方法对笔趣阁的网页进行了爬取
     

    在这里还是要推荐下我自己建的Python学习群:609616831,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!

  • 相关阅读:
    String和stringbuffer
    项目中Orcale存储过程优化记录
    大数据项目中的Oracle查询优化
    洛谷P3402 可持久化并查集
    Gym
    CodeForces
    Gym
    Gym
    UVA
    Kattis
  • 原文地址:https://www.cnblogs.com/python-miao/p/14281674.html
Copyright © 2011-2022 走看看