BeautifulSoup.Как replace_with () меняет теги на других - PullRequest
0 голосов
/ 06 декабря 2018

Мне стыдно спрашивать об этом.Я борюсь с replace_with ().Просто хочу узнать, как изменить теги.

Вот пример:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = "http://example.com/blabla/blublu/tata"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")  
page = page_soup.select_one(".list")
print(page)
if page:
    url = page.get("href")  
    newUrl = "http://example.com{}".format(url)
    Client = uReq(newUrl)
    pageHtml = Client.read()
    Client.close()      
    pSoup = soup(pageHtml, "html.parser")
    spot = pSoup.select(".view_details > h3")
    spots = spot[0].text
    print(spots)
    contain = pSoup.select(".info > table")

    #HERE I AM TRYING TO MAKE THE MAGIC

    for table in contain:
        table.find_all("table")
        table.replace_with("div")
    contains = contain[0]
    print(contains)

После изменения некоторых фиктивных ошибок.Я просто получаю оригинальный текст, не меняя тэги:

<table>
    <tr valign="top">
        <td>
            <div>Lorem ipsum...</div>
        </td>
    </tr>
</table>

Если кто-то может подсказать мне свет в эти темные моменты, это будет оценено.

1 Ответ

0 голосов
/ 06 декабря 2018

Попробуйте использовать это как основу, чтобы изменить имя тега table на div.

soup = BeautifulSoup('''<table>
    <tr valign="top">
        <td>
            <div>Lorem ipsum...</div>
        </td>
    </tr>
</table>''', 'html.parser')

tag = soup.table

tag.name = 'div'

print(tag)

Выход:

<div>
 <tr valign="top">
  <td>
   <div>
    Lorem ipsum...
   </div>
  </td>
 </tr>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...