gpt4 book ai didi

python - Beautiful Soup 以错误的方式更改了 html 代码

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:35 26 4
gpt4 key购买 nike

我正在尝试使用 Beautiful Soup 解析 html 代码。我通过Python中的requests模块发出get请求,然后将html代码转换为bs对象。但我遇到了一个问题。当我创建 BeautifulSoup 对象时,它以错误的方式更改了源代码。通过比较Soup对象和response.text,我可以确定这正是Beautiful Soup的错误。例如,它改变了表格标签的位置。

代码如下:

page = requests.get(address)

soup = BeautifulSoup(page.text, 'html.parser')


print(page.text)
print(soup)

输出为:

<table>
<tr>
<td>
some tags
</td>
<tr>
<td>some tags
</td>
</tr>
</table>


<table>
<tr>
<td>
some tags
</td>
</table>
<tr>
<td>some tags
</td>
</tr>

由于此更改,我无法正确解析表,因为 bs 对象中的表标记在所有 tr 标记关闭之前关闭。我应该怎么做才能解决我的问题?

这是我尝试解析的页面的完整代码:

<!DOCTYPE html>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=0;">
<title>
три версии нас</title>
<meta name="Description" content="Онлайн библиотека Траума ePub + FB2 + Mobi. Скачать книги для электронных читалок, iOS и Android устройств и Amazon Kindle">
<meta name="Keywords" content="Traum Library, traumlib, traum, Библиотека, Библиотека Траума, онлайн, Траум, Траума, скачать, бесплатно, электронные, книги, epub, FB2, Mobi, iBooks, Kindle, online, library, Traum, books, ebooks">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<script src="/likely.js"></script>
<link rel="stylesheet" href="/likely.css">
<style type="text/css">
* {
margin: 0;
padding: 0;
}

html {
height: 100%;
font-size: 100%;
}

body {
font-size: 0.625em;
position: relative;
min-height: 100%;
margin: 0;
background-image: url(/back.png);
}

#book_header {
padding-top: 5px;
font-weight: bold;
margin-left: 10px;
margin-bottom: -5px;
color: #394263;
}

header {
border-bottom-style: solid;
border-bottom-width: 1px;
border-bottom-color: grey;
}

header {
overflow: hidden;
height: 68px;
width: 100%;
position: fixed;
left: 0px;
top: 0px;
background-color: rgb(248, 248, 248);
}

#content {
margin: 0 auto;
padding-top: 70px;
padding-bottom: 70px;
}

footer {
position: absolute;
bottom: 0px;
width: 100%;
}

.books p {
margin-top: 15px;
}

.books a {
position: absolute;
left: 70px;
}

p,
table,
td {
font: normal 1.2em sans-serif;
margin: 10px;
max-width: 768px;
}

h2 {
font: normal 1.4em sans-serif;
margin: 10px;
}

td,
tr {
padding: 4px;
}

a:link,
a:visited,
tr {
color: #394263;
text-decoration: none;
border-bottom: 1px solid;
border-color: #b2ccf0;
}

a:hover,
tr:hover {
color: #CC0000;
border-color: #f0b2b2
}

.pluso a {
border-bottom: none
}

;
tbody tr:hover {
background: RGB(235, 235, 235);
}

form {
display: inline-block;
margin-top: 10px;
}

td:first-child + td {
color: gray;
}

.speech {
border: 1px solid #DDD;
width: 300px;
padding: 0;
margin: 0
}

.speech input {
border: 0;
width: 240px;
display: inline-block;
height: 30px;
}

.speech img {
float: right;
width: 40px
}
</style>
<script>
if (document.cookie == '') {
var date = new Date(2030, 1, 1);
document.cookie = "book-format=mobi; path=/; expires=" + date.toUTCString();
}
</script>
</head>

<body OnLoad="document.search.find.focus();">
<header>
<h2><a href=/>Библиотека</a> Траума 2.33 &nbsp;Формат:&nbsp;
<select id='format-select' name='format-select'>
<option value='epub'>ePub</option><option value='fb2'>FB2</option><option selected value='mobi'>Mobi</option></select><br>
<form name=search action="/">
<input placeholder="&nbsp;поиск книги / автора" type="search" results="10" name="find" name="q" id="transcript" style="width:223px;height:23px;" autofocus="autofocus" autocomplete="on" spellcheck="true" value="">
<input type="submit" value="Найти!" style="width:65px;height:23px">
</form></header><div id=content>
<section><p>Найдено в русской библиотеке Траума: 0</p>
<table></table></section><p>Найдено в английской библиотеке Траума: 0</p>
<table></table><p>Найдено в библиотеке lib.rus.ec (<b>только FB2</b>): 1<br><font size=1>Поиск идет только при отсутствии результатов в TraumLib.</font></p>
<div id='librusec' style='display:block;'><table><tr><td><div id=book_header><a href="/?find=Барнетт Лора">Барнетт Лора</a></td><td>&nbsp;</td><td>&nbsp;</td></div><tr><td><a href="/d.php?file=653860&name=Барнетт - Три версии нас.fb2"">Барнетт - Три версии нас<td>1.47MB</td></tr>
</div></table></div><footer><font size=2>
<div class="likely" data-url="http://lib.it.cx" data-title="Библиотека Траума 2.33 ePub/FB2/Mobi" style="margin:10px;">
<div class="twitter"></div>
<div class="facebook"></div>
<div class="gplus"></div>
<div class="vkontakte"></div>
<div class="telegram"></div>
<div class="odnoklassniki"></div>
<div class="linkedin"></div>
<div class="whatsapp"></div>
<div class="pinterest" data-media="i/pinnable.jpg"></div>
</div>
<pre style=\"margin:10px;\">

Найдено в БД за 0.0159 с</div>
</footer>
</body>
<script>
var sel = document.getElementById("format-select");
sel.onchange = function() {
var date = new Date( 2030,1,1 );
var format = sel.value;
document.cookie="book-format=" + format + "; path=/; expires="+date.toUTCString();
location.reload();
};
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-49300233-1', 'auto');
ga('send', 'pageview');
</script>
</html>

最佳答案

解决从“html.parser”切换到“lxml”的问题。但如果有人知道为什么 html.parser 无法正常工作,如果您分享,我将不胜感激。

关于python - Beautiful Soup 以错误的方式更改了 html 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56628915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com