Cześć Próbuję zaktualizować jedną z treści stołowych dla strony z wyłączeniem przy użyciu BeautifulSoup i API prośby.

To mój kod. Jestem w stanie znaleźć i zaktualizować TD, ale nie mogłem wstawić zaktualizowanej TD do zmiennej zupy.

content=requests.get(address,headers=headers).text
soup=BeautifulSoup(content,'html.parser')
for td in soup.find_all('td'):
if td == "<td> i need to update this </td>:
td.replace_with("<td>updated</td>")

Potrzebuję zaktualizowanej TD do włożenia do zmiennej zupy, więc kiedy szukam zupa.find_all ('td'), mogę znaleźć zaktualizowany zamiast tego, jak mogę to zrobić

Dzięki

0
Henry 21 kwiecień 2021, 03:51

1 odpowiedź

Najlepsza odpowiedź

Uwaga: Nie używaj wyrażeń regularnych do analizowania HTML. Bardzo mam nadzieję, że istnieje alternatywna metoda rozwiązania tego problemu. Ale nie mogłem myśleć o jednym.

Korzystając z następującego wyrażenia regularnego, można znaleźć każdy element td bez przyłączonych atrybutów. Może to być użyte do znalezienia elementów, ale nie próbuj tego, aby uzyskać informacje z elementów :

<td>.*?</td>

Następnie możesz użyć metody Pattern.sub(), aby zastąpić każdą instancję elementu {x1}} za pomocą <td>updated</td>.

import re

import bs4
import requests

content = requests.get(address, headers=headers).text
regex = re.compile(r"<td>.*?</td>")
new_content = regex.sub("<td>update</td>", content)

soup = bs4.BeautifulSoup(new_content, features="html.parser")
0
Jacob Lee 21 kwiecień 2021, 01:17