Я пытаюсь прочитать HTML-страницу и получить от нее некоторую информацию.В одной из строк мне нужна информация внутри атрибута alt изображения.вот так:
<img src='logo.jpg' alt='info i need'>
Проблема в том, что при синтаксическом анализе beautifulsoup окружает содержимое alt двойными кавычками вместо использования уже существующих одинарных кавычек.Из-за этого результат выглядит примерно так:
<img alt="\'info" i="" need="" src="\'logo.jpg\'"/>
В настоящее время мой код состоит в следующем:
name = row.find("td", {"class": "logo"}).find("img")["alt"]
, который должен возвращать «необходимую мне информацию», но в настоящее время возвращает »\ "инфо" Что я могу делать не так?Есть ли какие-либо настройки, которые мне нужно изменить, чтобы BeautifulSoup правильно проанализировал это?
Редактировать: мой код выглядит примерно так (я тоже использовал стандартный html-парсер, но без разницы)
import sys
import urllib.request
import time
from html.parser import HTMLParser
from bs4 import BeautifulSoup
def main():
url = 'https://myhtml.html'
with urllib.request.urlopen(url) as page:
text = str(page.read())
html = BeautifulSoup(page.read(), "lxml")
table = html.find("table", {"id": "info_table"})
rows = table.find_all("tr")
for row in rows:
if row.find("th") is not None:
continue
info = row.find("td", {"class": "logo"}).find("img")["alt"]
print(info)
if __name__ == '__main__':
main()
и html:
<div class="table_container">
<table class="info_table" id="info_table">
<tr>
<th class="logo">Important infos</th>
<th class="useless">Other infos</th>
</tr>
<tr >
<td class="logo"><img src='Logo.jpg' alt='info i need'><br></td>
<td class="useless">
<nobr>useless info</nobr>
</td>
</tr>
<tr >
<td class="logo"><img src='Logo2.jpg' alt='info i need too'><br></td>
<td class="useless">
<nobr>useless info</nobr>
</td>
</tr>