爬虫-1.4排行榜小说批量下载

import requests
import time
from bs4 import BeautifulSoup

url = "https://www.qu.la/paihangbang/"

def get_html(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status
        # 我手动测试了编码。并设置好,这样有助于效率的提升
        r.encoding = 'utr-8'
        return r.text
    except:
        return "Someting Wrong!"


def get_content(url):
    '''
    爬取每一类型小说排行榜,
    按顺序写入文件,
    文件内容为 小说名字+小说链接
    将内容保存到列表
    并且返回一个装满url链接的列表
    '''
    url_list = []
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    # 由于小说排版的原因,历史类和完本类小说不在一个div里

    category_list = soup.find_all('div', class_='index_toplist mright mbottom')
    for cate in category_list:
        name = cate.find('div', class_='toptab').span.string
        with open('F:/CODE/Python/abc.csv', 'a+') as f:
            f.write("\n小说种类:{} \n".format(name))

        # 我们直接通过style属性来定位总排行榜
        general_list = cate.find(style='display: block;')
        # 找到全部的小说名字,发现他们全部都包含在li标签之中
        book_list = general_list.find_all('li')
        # 循环遍历出每一个小说的的名字,以及链接
        for book in book_list:
            link = 'http://www.qu.la/' + book.a['href']
            title = book.a['title']
            # 我们将所有文章的url地址保存在一个列表变量里
            url_list.append(link)
            # 这里使用a模式,防止清空文件
            with open('F:/CODE/Python/abc.csv', 'a') as f:
                f.write("小说名:{:<} \t 小说地址:{:<} \n".format(title, link))
    return url_list


def get_txt_url(url):

    url_list = []
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    lista = soup.find_all('dd')
    for url in lista:
        url_list.append('http://www.qu.la/' + url.a['href'])

    return url_list

def get_one_txt(url):
    '''
    获取小说每个章节的文本
    并写入到本地
    '''
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    title = soup.find('h1')
    return title


for url in get_content(url):
    for url_ in get_txt_url(url):
        print(get_one_txt(url_))

这个案例中url是每部小说的url
url_是每部小说的各个章节的url
最后输出的是各个章节url里面的title

猜你喜欢

转载自blog.csdn.net/strawqqhat/article/details/89374076