python 小说下载

里面用到了requests 和bs4

可以了解了两个函数后在返回看,下面纯属于学习时候的记录

自己瞎琢磨写的!!!

import requests   # 访问链接
import re   # 正则
print(
    '建议进入此网搜索:https://www.xs386.com/\n'
    '例如完整的链接是:https://www.xs386.com/26010/17168270.html\n'
    '第二个参数输入:70---这里意思是第一章参数是从70开始\n'
    '第三个参数输入:80---这里意思是看到第十章后面接的数字是80\n'
    '第四个参数输入:1---这里意思是每跳一张他链接数变化是递增1\n'
    '第五个参数输入保存路径:\n'
    '例如:E:/吞空/\n'
)
int_httml = input("请输入你要访问的网页:")
int_shu1 = input('请输入开始参数:')
int_shu2 = input('请输入停止参数:')
int_shu3 = input('请输入递增参数:')
int_open = input('请输入保存的路径:')
# 获取到的内容
def INTHTTP(url, heads):
    try:
        r = requests.get(url, headers=heads)   # 访问他的网页  GET  POST
        r.encoding = r.apparent_encoding   # 获取的解码形式
        ztm = r.status_code   # 返回的状态码 200为真
        nr = r.text  # 返回的内容
        return nr
        # 获取的nr内容  返回
    except:
        return ''
from bs4 import BeautifulSoup   # 解析
# 将内容进行一个解析并且使用CSS选择器进行筛选
def INT_BeautifulSoup(nr):
    try:
        web = BeautifulSoup(nr, features='html.parser')  # 解析h5格式
        # 获取解析的内容
        sx_nr = web.select('.box_con > div#content')
        #sx_nr= web.select('.box_con > div.bookname') # 使用select  选择器进行筛选
        return sx_nr
    except:    # 如果运行的程序不符合 返回空值
        return ''
def INT_BeautifulSoup1(nr):
    try:
        web = BeautifulSoup(nr, features='html.parser')
        # 获取解析的内容
        sx_nr = web.select('.box_con > div.bookname > h1')   # 使用select  选择器进行筛选
        for i in sx_nr:
            h1 = i.text
            return h1
    except:    # 如果运行的程序不符合 返回空值
        return ''
# 运行的主程序
def main():
    heads = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
    }
    p = 0
    for k in range(int(int_shu1), int(int_shu2), int(int_shu3)):
        url = f'{int_httml}{k}.html'
        open_read = INTHTTP(url, heads)
        fanhui1 = INT_BeautifulSoup1(open_read)
        fanhui = INT_BeautifulSoup(open_read)
        print(fanhui1)
       # [<h1> 第一章 罗峰</h1>]
        for i in fanhui:
            i1 = i.text
            s = re.sub(' ', '' , i1)
            s1 = re.sub('\n', '', s)
            with open(f'{int_open}{fanhui1}.txt', 'w', encoding='utf-8')as open_1:
                open_1.write(s1)
if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值