首页 > 编程语言 >python学习记录;笔趣阁小说全文下载工具爬虫源码

python学习记录;笔趣阁小说全文下载工具爬虫源码

时间:2022-10-17 15:14:44浏览次数:52  
标签:下载工具 python selector url 源码 import print xs 小说

笔趣阁小说全本下载工具

#导入模块
import requests
import parsel
from lxml import etree
import re
import pandas as pd
import datetime
import time
from tqdm import tqdm
#请求头
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
curr_time = datetime.datetime.now()
times = datetime.datetime.strftime(curr_time, '%Y-%m-%d %H:%M:%S')
print(f' 现在是:{times}     by 琴棋书画')
print()
print('***********欢迎使用笔趣阁小说全本下载工具*************')
print()
while True:
    #请求数据
    keyword=input('请输入你想要搜索的小说名字(0退出):')
    if keyword=='0':
        break
    seacher_url=f'https://www.biquge9.com/s?q={keyword}'
    respones=requests.get(seacher_url,headers=headers)
    #print(respones.text)
    #解析获取数据
    selector=etree.HTML(respones.text)
    xs_urls=selector.xpath('//h4/a[contains(@href,"/book/")]/@href')    #获取小说地址列表
    xs_names=selector.xpath('//a[contains(@href,"/book/")]/text()')     #获取小说名字列表
    xs_authers=selector.xpath('//div[contains(@class,"author")]/text()')    #获取小说作者列表
    if xs_names:
    #print(xs_urls,xs_names,xs_authers)
        xs_list=[]
        #遍历弄表
        for xs_url,xs_name,xs_auther in zip(xs_urls,xs_names,xs_authers):
            xs_id=xs_url.split('/')[2]  #小说ID
            xs_url='https://www.biquge9.com'+xs_url #小说网址
            xs_name=xs_name.strip() #小说书名
            xs_auther=xs_auther.split(':')[1] #小说作者
            #print(xs_id,xs_url,xs_name,xs_auther)
            dict={'书名':xs_name,'作者':xs_auther,'ID':xs_id}  #生成字典
            xs_list.append(dict)#小说信息列表
        print()
        print(f'一共搜索到{len(xs_list)}条数据,结果如下:')
        print()
        sea_data=pd.DataFrame(xs_list)
        print(sea_data)#输出小说信息列表
        print()
        key_num=input('请输入你要下载的小说序号:')
        print()
        print('小说正在下载,已完成......')
        xs_ID=xs_list[int(key_num)]['ID']
        url='https://www.biquge9.com/book/'+xs_ID
        urls=[url+'/{}.html'.format(str(i))  for i in range(1,5000)]        #生成章节地址列表
        #print(urls)

        for url1 in tqdm(urls):         #遍历章节地址列表
            data_1=requests.get(url1,headers=headers)               #请求章节文本
            selector=parsel.Selector(data_1.text)
            #print(selector)
            title=selector.css('.content h1::text').get()               #获取章节标题
            #print(title)
            content=selector.css('#chaptercontent::text').getall()      #获取章节正文
            #print(content)
            content_1='\n'.join(content)
            #print(content_1)
            with open(xs_name+'.txt','a+',encoding='utf-8') as file:        #保存小说内容到TXT文件
                if title!='':
                    file.write(title)
                    file.write('\n')
                    file.write(content_1)
                    file.write('\n')
                    #print('正在保存',title)

                else:
                    break
    else:
        print('请正确输入小说名字或作者名字,没有查到这本书的数据.....')

 

标签:下载工具,python,selector,url,源码,import,print,xs,小说
From: https://www.cnblogs.com/qlsh/p/16799235.html

相关文章

  • Python3爬虫中Selenium的用法详解
    Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些JavaScript动......
  • js 简单封装一个像python中的range函数
    functionrange(start,end,step){letarr=[];for(leti=start;i<end;i++){if(i%step==0){arr.push(i)}}returnarr;}letarr=range(0,60,5);conso......
  • ConcurrentHashMap源码,看我这篇就够了
    思考:HashTable是线程安全的,为什么不推荐使用?HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进......
  • ConcurrentHashMap源码,看我这篇就够了
    持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第5天,点击查看活动详情思考:HashTable是线程安全的,为什么不推荐使用?HashTable是一个线程安全的类,它使用s......
  • 日常便利-使用Python制作文件批量处理的exe
    序偶尔遇见要对文件名批量修改,部分文件名替换时候场景。思路是遍历文件名,然后对每个文件名重命名替换,打包成exePython代码importostry:file_dir=input(......
  • Python F + 双引号表达式【格式化输出】
    参考链接:https://blog.csdn.net/weixin_47702737/article/details/112756957主要用于格式化输出,setting=f"{args.env}_{args.seed}"buffer_name=f"{args.buffer_nam......
  • vue源码分析-响应式系统(一)
    从这一小节开始,正式进入Vue源码的核心,也是难点之一,响应式系统的构建。这一节将作为分析响应式构建过程源码的入门,主要分为两大块,第一块是针对响应式数据props,methods,da......
  • 直播商城系统源码,实现最简单最基本的轮播图样式
    直播商城系统源码,实现最简单最基本的轮播图样式一、H5的布局可以使用自己的图片,需要注意路径​ <divclass="banner"><ulclass="imgList"><li><imgsrc="1.png"/></l......
  • vue源码分析-响应式系统(二)
    为了深入介绍响应式系统的内部实现原理,我们花了一整节的篇幅介绍了数据(包括data,computed,props)如何初始化成为响应式对象的过程。有了响应式数据对象的知识,上一节的后......
  • 配置win10+anaconda3+python3.6+pytorch
    1.下载安装anaconda如果下载太慢,可以选择清华镜像下载:​​https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/​​​2.配置环境变量3.修改镜像如果按照提示http......