用爬虫写一个,小说下载程序

用爬虫写一个,小说下载程序

环境:python 3.7.3
没啥难度和技术含量,随便写写。本来程序有部分可用format进行优化,但又想了想小说名可能还会
有一些奇奇怪怪的符号,就没弄了

import requests
from lxml import etree
import os

def novel_download(novel):  #搜索小说名,找出下载地址
    dic={}
    url="https://www.shuyaya.cc/search?wd="+novel
    head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
    r=requests.get(url,headers=head)
    r.encoding=r.apparent_encoding
    content=etree.HTML(r.text)
    hrefs=content.xpath('//span[@class="width369 jhfd"]/a[@class="green"]/@href') #找到对应的所有小说的url
    names=content.xpath('//span[@class="width111"]/a/text()') #找到对应的作者
    novel_name=content.xpath('//span[@class="width369 jhfd"]/a[@class="green"]/text()') #找到对应书名
    for i in range(0,len(hrefs)): #用字典建立对应关系
        dic[i]=hrefs[i]

    print("{:^26}\t{:^10}".format("书名","作者"))

    for i in range(0,len(hrefs)):
        print("{:<2}{:^20}\t{:^10}".format(str(i),novel_name[i],names[i]))

    num=int(input("输入你想下载小说对应的序号: "))
    r=requests.get(dic[num],headers=head)
    r.encoding=r.apparent_encoding
    content=etree.HTML(r.text)
    href=content.xpath('//div[@class="downmenu"]/a[@rel="nofollow"]/@href')
    r=requests.get(href[0],headers=head)
    print("\n下载中.....\n")
    f=open("F://novel/"+novel_name[num]+".zip",'wb')
    f.write(r.content)
    f.close()
if __name__ == "__main__":
    try:
        os.makedirs("F://novel") #建立存储路径
    except:
        pass
    print("下载的小说存保存在F://novel")
    print("输入的小说尽量准确以免下载错误")
    print(
        """
        example:

             斗罗大陆IV终极斗罗
             斗罗大陆 唐家三少
        可在小说名后面加上作者名以提高准确性,也支持模糊搜索

        """
    )
    novel=input("\n输入你想下载的小说: \n")
    print("\n")
    try:
        novel_download(novel)
        print("\n下载完成")
        print("按回车键关闭")
        input("")
    except:
        print("\n你输入的小说名不准确,或者还没有这本小说")
        print("按回车键关闭")
        input("")
    

运行如下图所示
在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值