早上好,我正在寻找一种将html代码转换为纯文本的方法,我留下一个例子
HTML
<div class="card-headline"><h3 class="card-title">
文本普莱诺
<div class="card-headline"><h3 class="card-title">
BeautifulSoup 是一个抓取库,因此它可能不是进行 HTML 渲染的最佳选择。如果不是必须使用 BeautifulSoup,你应该看看 html2text。例如:
输出:
一些文字更多文字更多文字
其他一些文字
<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>