从零开始有图:pycharm实现某小说网站资源的获取

运行环境

PyCharm 2023.2.1

python3.11


详细步骤

1、安装requests,parsel和bs4库

点击终端

输入

复制代码
pip install requests

pip install parsel

pip install bs4

2、使用pycharm编写python代码,确保在pycharm中可以正常运行代码

不同网站获取方法有一定差距,以笔趣阁网站之一为例,网址为

复制代码
https://www.biqugen.net

搜索需要获取的书籍,进入如下界面,网址栏显示书籍编号(例如诛仙的书籍编号为1416)

点击进入目录第一章,进入如下界面,网址栏显示书籍起始章节的网页编号(例如序章的网页编号为1467648)

点击进入目录最后一章,进入如下界面,网址栏显示书籍结束章节的网页编号(例如序章的网页编号为1467950)

示例代码,可以通过在pycharm中运行该代码对该网站的内容进行获取

复制代码
import requests
from bs4 import BeautifulSoup
from parsel import Selector

def get_novel_title(url):
    try:
        # 发送请求
        response = requests.get(url)

        # 检查请求是否成功
        response.raise_for_status()

        # 使用parsel提取小说名称
        title_selector = Selector(response.text)
        title = title_selector.css('h1::text').get()

        return title

    except requests.exceptions.RequestException as e:
        print(f"Error: {e}")
        # 如果请求失败,返回None
        return None

def get_chapter_title_and_text(url):
    try:
        # 发送请求
        response = requests.get(url)

        # 检查请求是否成功
        response.raise_for_status()

        # 使用BeautifulSoup解析HTML
        soup = BeautifulSoup(response.text, 'html.parser')

        # 提取章节标题
        title = soup.title.string

        # 提取正文内容
        content = soup.find('div', {'id': 'content'})

        if content:
            # 处理文本中的<br>标签
            text_with_linebreaks = ''
            for element in content.stripped_strings:
                text_with_linebreaks += element + '\n'

            return title, text_with_linebreaks

        return None, None

    except requests.exceptions.RequestException as e:
        print(f"Error: {e}")
        # 如果请求失败,返回None
        return None, None

# 获取用户输入,添加循环以允许重新输入
while True:
    book_id = input("请输入需要获取的书籍编号:")
    book_url = f'https://www.biqugen.net/book/{book_id}/'
    book_title = get_novel_title(book_url)

    if book_title:
        print(f"成功获取书籍信息:{book_title}")
        break
    else:
        print(f"未能获取书籍信息,请重新输入!")

while True:
    try:
        start_chapter = int(input("请输入起始章节的网页编号:"))
        end_chapter = int(input("请输入结束章节的网页编号:"))
        output_file_path = input("请输入输出文件的位置:\n(例如C:\\Users\\Abit\\Desktop\\biqugen.txt): ")
        print("章节获取情况:")
        # 打开文件以写入模式
        with open(output_file_path, 'w', encoding='utf-8') as output_file:
            # 生成URL并遍历爬取每个网页的内容
            for chapter_number in range(start_chapter, end_chapter + 1):
                url = f'https://www.biqugen.net/book/{book_id}/{chapter_number}.html'
                title, result = get_chapter_title_and_text(url)

                # 将成功的章节名称和内容写入文件
                if result:
                    output_file.write(f"{title}:\n{result}\n{'='*50}\n")
                    print(f"{chapter_number}   {title}")
                else:
                    print(f"{chapter_number}   未找到相关内容")
        break

    except ValueError:
        print("输入的章节编号应为整数,请重新输入!")
    except Exception as e:
        print(f"发生错误: {e}")

运行结果如图

注意事项

如果出现以下问题

pip : 无法将"pip"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

注意环境变量的配置,需要将你的python的安装目录下的Script文件夹的路径添加到Path中,比如C:\Program Files\Python311\Scripts

相关推荐
多恩Stone9 分钟前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ40220549625 分钟前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
百锦再25 分钟前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
QQ51100828527 分钟前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
QQ_196328847528 分钟前
Python-flask框架西山区家政服务评价系统网站设计与开发-Pycharm django
python·pycharm·flask
遥遥江上月29 分钟前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
B站计算机毕业设计超人32 分钟前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
B站_计算机毕业设计之家33 分钟前
电影知识图谱推荐问答系统 | Python Django系统 Neo4j MySQL Echarts 协同过滤 大数据 人工智能 毕业设计源码(建议收藏)✅
人工智能·python·机器学习·django·毕业设计·echarts·知识图谱
计算机专业码农一枚34 分钟前
Python-flask框架基于推荐算法的在线课程推荐系统设计与实现-Pycharm django
python·flask·推荐算法
ATCB34 分钟前
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)
后端·python·django