将 html 转换为纯文本 Python

问题描述 投票:0回答:2

早上好,我正在寻找一种将html代码转换为纯文本的方法,我留下一个例子

HTML

<div class="card-headline"><h3 class="card-title">

文本普莱诺

&lt;div class=&quot;card-headline&quot;&gt;&lt;h3 class=&quot;card-title&quot;&gt;
python html plaintext
2个回答
1
投票

BeautifulSoup 是一个抓取库,因此它可能不是进行 HTML 渲染的最佳选择。如果不是必须使用 BeautifulSoup,你应该看看 html2text。例如:

  • 导入 html2text
  • html = open("foobar.html").read()
  • 打印 html2text.html2text(html)

输出:

一些文字更多文字更多文字

  • 列出项目
  • 又一个列表项

其他一些文字

  • 列出项目
  • 又一个列表项

0
投票
<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Sun Clicker</title>

<style>

    body {

        font-family: Arial, sans-serif;

        text-align: center;

        padding: 50px;

        background-color: #87CEEB;

    }

    h1 {

        color: #FFA500;

    }

    .sun-button {

        font-size: 100px;

        border: none;

        background-color: transparent;

        cursor: pointer;

    }

    .score, .lunar-score {

        font-size: 24px;

        margin-top: 20px;

        color: #333;

    }

    #lunar-score {

        color: #4B0082;

    }

    #shop {

        margin-top: 30px;

        border: 2px solid #333;

        padding: 20px;

        border-radius: 10px;

        background-color: #fff;

    }

    .shop-item {

        margin: 10px 0;

    }

    button {

        font-size: 18px;

        padding: 10px;

        background-color: #FFA500;

        border: none;

        border-radius: 5px;

        cursor: pointer;

        color: white;

    }

    button:disabled {

        background-color: gray;

        cursor: not-allowed;

    }

    #asteroid {

        position: absolute;

        top: 0;

        left: 0;

        font-size: 80px;

        display: none;

        animation: flyAsteroid 5s linear;

    }

    @keyframes flyAsteroid {

        from { left: 0; top: 0; }

        to { left: 100%; top: 100%; }

    }

</style>
<h1>Sun Clicker 🌞</h1>

<button class="sun-button" id="sun-button" onclick="clickButton()">🌞</button>

<div class="score">Solar Points: <span id="score">0</span></div>

<div class="lunar-score">Lunar Points: <span id="lunar-score">0</span></div>

<div id="shop">

    <h2>Shop</h2>

    <div class="shop-item">

        <span>Doubler (2x Solar Points on sun clicks) - 25 Lunar Points (Max 5 purchases)</span>

        <br>

        <button id="buy-doubler" onclick="buyDoubler()" disabled>Buy Doubler</button>

        <br>

        <span id="doublers-left">Doublers left: 5</span>

    </div>

</div>

<div id="asteroid">☄️</div>

<script>

    let solarScore = 0;

    let lunarScore = 0;

    let doublerCount = 0;

    let asteroidActive = false;

    let solarStormActive = false;

    function formatScore(score) {

        if (score >= 1e6) {

            return (score / 1e6).toFixed(1) + 'mil'; // Millions

        } else if (score >= 1e3) {

            return (score / 1e3).toFixed(1) + 'k'; // Thousands

        } else {

            return score; // Below thousand, show as is

        }

    }

    function updateScores() {

        document.getElementById('score').innerText = formatScore(solarScore);

        document.getElementById('lunar-score').innerText = formatScore(lunarScore);

    }

    function clickButton() {

        const isMoon = Math.random() < 0.10 && !solarStormActive; // 10% chance to turn into the moon, blocked during solar storm

        if (isMoon) {

            document.getElementById('sun-button').innerText = '🌜'; // Change to moon emoji

            const lunarPoints = asteroidActive ? 2 : 1; // Double lunar points if asteroid is active

            lunarScore += lunarPoints;

            updateScores();

            checkShop(); // Check if enough lunar points for doubler

            triggerAsteroid(); // Check if asteroid event happens after 5 doublers

            setTimeout(() => {

                document.getElementById('sun-button').innerText = '🌞'; // Change back to sun after 1 second

            }, 1000);

        } else {

            const solarMultiplier = solarStormActive ? 15 : Math.pow(2, doublerCount); // Solar Storm multiplies points by 15

            solarScore += solarMultiplier;

            updateScores();

        }

    }

    function checkShop() {

        const buyButton = document.getElementById('buy-doubler');

        if (lunarScore >= 25 && doublerCount < 5) {

            buyButton.disabled = false;

        } else {

            buyButton.disabled = true;

        }

    }

    function buyDoubler() {

        if (lunarScore >= 25 && doublerCount < 5) {

            lunarScore -= 25;

            updateScores();

            doublerCount++;

            document.getElementById('doublers-left').innerText = `Doublers left: ${5 - doublerCount}`;

            if (doublerCount === 5) {

                document.getElementById('buy-doubler').disabled = true;

                alert("You've bought the maximum number of doublers! Watch out for asteroids and solar storms now!");

                triggerSolarStorm(); // Possible solar storm event

            }

        }

    }

    function triggerAsteroid() {

        if (doublerCount === 5 && Math.random() < 0.05) { // 5% chance after 5 doublers

            asteroidActive = true;

            document.getElementById('asteroid').style.display = 'block';

            setTimeout(() => {

                document.getElementById('asteroid').style.display = 'none';

            }, 5000); // Show the asteroid for 5 seconds

            setTimeout(() => {

                asteroidActive = false;

                alert("Asteroid event over! Lunar points are back to normal.");

            }, 30000); // Asteroid effect lasts for 30 seconds

        }

    }

    function triggerSolarStorm() {

        if (Math.random() < 0.07) { // 7% chance of Solar Storm after 5 doublers

            solarStormActive = true;

            alert("Solar Storm is happening! Moon won't appear, and solar points are multiplied by 15 for 10 seconds!");

            setTimeout(() => {

                solarStormActive = false;

                alert("Solar Storm is over! Solar points return to normal.");

            }, 10000); // Solar Storm lasts for 10 seconds

        }

    }

</script>
© www.soinside.com 2019 - 2024. All rights reserved.