zoukankan      html  css  js  c++  java
  • Beautifusoup

    text = soup.find('div', {'class': 'mulu'})  #查找目录,坑死我了。就这个东西,
    知乎上看别人写的爬取网络小说,这个最适合我。
    我一开始老是使用beautifulsoup ,find老是不准,原来是这个样子的。这个格式的。真是太无情了。
    不准的原因还有一个,那就是解析的页面错了。愚蠢的人类
    继续学习。
    作者:周小馬
    链接:https://www.zhihu.com/question/48900224/answer/266561350
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    # -*- coding: utf-8 -*-
    # 导入俩库,足够了
    import requests
    from bs4 import BeautifulSoup
    
    url = "http://www.88dushu.com/xiaoshuo/2/2392/index.html"  # 小说索引页
    url_text = "http://www.88dushu.com/xiaoshuo/2/2392/"  # 小说主页面,后面还需加上每一章的链接
    page = range(174, 294)  # 第三部是174-294页
    
    # 定义第一个函数, 用来爬取每一章的url和章节名
    def get_url(url):
        content = requests.get(url).content
        soup = BeautifulSoup(content)
        # 找到每一章所在的位置,都在'li'这个标签
        text = soup.find('div', {'class': 'mulu'}).find('ul').find_all('li')
        urls = []
        titles = []
        for i in page:  # 循环第三部的每一章
            url1 = text[i].find('a').get('href')
            title = text[i].find('a').get_text()
            urls.append(url1)
            titles.append(title)
        #返回链接和章节名
        return urls, titles
    
    # 定义第二个函数,用来得到每一章的内容,并存入TXT文件
    def get_text():
        # 从上一个函数获取链接和章节名
        urls, titles = get_url(url)
        # 文本文件设置为追加模式'a',避免前面的内容被覆盖
        f = open('d:/kuanglong.txt', 'a')
        for i in range(len(urls)):
            url_tt = url_text + str(urls[i])  # 每一章完整的链接
            content = requests.get(url_tt).content
            soup = BeautifulSoup(content)
            # 得到一章的内容
            text = soup.find('div', {'class': 'yd_text2'}).get_text()
            # 将得到的内容清洗,去除广告
            text = text.replace("****[ 请到  六九中文阅读最新章节 ]****", '').replace('[****/[  六九中文急速更新 ]****/]', '')
                .replace('xa0', '')
            # 章节名 + 章节内容
            texts = titles[i] + text
            # 写入txt文件
            f.write(texts)
        # 循环完之后关闭文件句柄
        f.close()
    
    # 运行程序
    if __name__ == '__main__':
        get_text()

    获取文档链接

    for link in soup.find_all('a'):
        print(link.get('href'))
        # http://example.com/elsie
        # http://example.com/lacie
        # http://example.com/tillie

    获取文档文字内容

    print(soup.get_text())
    # The Dormouse's story
    #
    # The Dormouse's story
    #
    # Once upon a time there were three little sisters; and their names were
    # Elsie,
    # Lacie and
    # Tillie;
    # and they lived at the bottom of a well.
    #
    # ...

    慢不要快,稳才是对的。

  • 相关阅读:
    PHP语言参考类型/变量/常量/表达式/运算符/控制结构/函数
    代码的可维护性问题
    null与DBNull转换到String型
    Sqlserver数据库表空间统计
    MS SqlServer中少用但是好用的SQL语句[原创]
    数据库安装没装好,害死人啊
    PHP语言参数类与对象
    PHP,MySQL的安装与配置
    PHP特性
    在NebBean中配置常用插件调试/预览页面/打开项目文件夹/JS代码提示
  • 原文地址:https://www.cnblogs.com/sakura3/p/8460224.html
Copyright © 2011-2022 走看看