欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

xpath+多进程爬取全书网纯爱耽美类别的所有小说。

程序员文章站 2023-11-02 13:21:22
控制台输出 打开文件夹查看是否下载成功 done。 ......
# 需要的库
import requests
from lxml import etree
from multiprocessing import pool
import os
# 请求头
headers = {
    'user-agent': 'mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/65.0.3325.181 safari/537.36'
}
# 创建存储路径
pathname = './全书网/'
if not os.path.exists(pathname):
    os.mkdir(pathname)
# 获取书籍列表
def get_booklist(url):
    try:
        response = requests.get(url=url,headers=headers)
        etrees = etree.html(response.text)
        sum = etrees.xpath('//a[@class="last"]/text()')[0]
        booklist = etrees.xpath('//ul[@class="seewell cf"]/li')
        book_list = []
        for books in booklist:
            book = books.xpath('./a/@href')[0]
            book_list.append(book)
        pool.map(get_book,book_list)
        urls = ['http://www.quanshuwang.com/list/3_{}.html'.format(i) for i in range(2,int(sum)+1)]
        pool.map(get_booklist,urls)
    except exception:
        print('get_booklist failed')
# 获取具体书籍
def get_book(url):
    try:
        response = requests.get(url=url, headers=headers)
        etrees = etree.html(response.content.decode("gb18030"))
        book_name = etrees.xpath('//div[@class="b-info"]/h1/text()')[0]
        if os.path.exists(pathname+book_name+'.txt'):
            print(book_name+'.书籍已存在,如需重新下载请删除原文件')
            return none
        book = etrees.xpath('//div[@class="b-oper"]/a/@href')[0]
        get_mulu(book)
    except exception:
        print('get_book failed')
# 获取书籍目录
def get_mulu(url):
    try:
        response = requests.get(url=url, headers=headers)
        etrees = etree.html(response.text)
        book = etrees.xpath('//div[@class="clearfix dirconone"]/li')
        for i in book:
            book = i.xpath('./a/@href')[0]
            get_content(book)
    except exception:
        print('get_mulu failed')
# 获取并写入书籍内容
def get_content(url):
    try:
        response = requests.get(url=url, headers=headers)
        etrees = etree.html(response.content.decode("gb18030"))
        title = etrees.xpath('//a[@class="article_title"]/text()')[0]
        zhangjie = etrees.xpath('//strong[@class="l jieqi_title"]/text()')[0]
        contents = etrees.xpath('//div[@class="maincontenr"]/text()')
        content = ''.join(contents)
        with open(pathname+title+'.txt','a+',encoding='utf-8') as f:
            f.write(zhangjie+'\n\n'+content+'\n\n')
        print('正在下载:',zhangjie)
    except exception:
        print('get_content failed')
# 程序入口
if __name__ == '__main__':
    url = 'http://www.quanshuwang.com/list/3_1.html'
    # 创建进程池
    pool = pool()
    # 启动程序
    get_booklist(url)

控制台输出

正在下载: 章 节目录 第三十四章 不眠的天堂
正在下载: 章 节目录 第四十四章 :耳光
正在下载: 章 节目录 第046章 找到变异元晶
正在下载: 章节目录 第二十八章 修路优惠
正在下载: 章 节目录 第四十五章 :憋屈
正在下载: 章 节目录 第047章 至宝得手
正在下载: 章节目录 第二十九章 猜鱼
正在下载: 章 节目录 第048章 凤凰涅槃,浴火重生。
正在下载: 章节目录 第三十章 养猪场
正在下载: 章 节目录 第四十六章 :酣畅淋漓
正在下载: 章 节目录 第049章 上等天赋资质
正在下载: 章节目录 第三十一章 上鬼身
正在下载: 章 节目录 第050章 元力神兵
正在下载: 章 节目录 第四十七章 :舵主之位
正在下载: 章 节目录 第三十五章 黑暗
正在下载: 章节目录 第三十二章 吓死马有钱
正在下载: 章 节目录 第三十六章 商议
正在下载: 章 节目录 第051章 天级上品龙隐术
正在下载: 章 节目录 第三十七章 寻觅
正在下载: 章节目录 第三十三章 再遇李三
正在下载: 章节目录 第三十四章 借了一百万

打开文件夹查看是否下载成功

xpath+多进程爬取全书网纯爱耽美类别的所有小说。

xpath+多进程爬取全书网纯爱耽美类别的所有小说。

 

 done。