היום למדתי: בדיקת מאפיין ב Beautiful Soup בפייתון
31/01/2024
הקוד הבא נכשל כי ללינק השני אין מאפיין href:
from bs4 import BeautifulSoup
text = """<div>
<a href="#a">a</a>
<a>not a link</a>
</div>"""
if __name__ == "__main__":
soup = BeautifulSoup(text, features="html.parser")
for link in soup.find_all("a"):
print(link["href"])
יותר מעניין לשים לב ש bs4.Tag לא מימשו בדיקת שייכות הקוד הזה רץ אבל לא מדפיס אף לינק:
for link in soup.find_all("a"):
if "href" in link:
print(link["href"])
מה עושים? דרך אחת היא להסתכל על מאפיין attrs של התג, שהוא כן מילון:
for link in soup.find_all("a"):
if "href" in link.attrs:
print(link["href"])
דרך שניה היא להשתמש ב get במקום בסוגריים מרובעים, כי get מחזיר None כשהמאפיין לא קיים:
for link in soup.find_all("a"):
if link.get("href") is not None:
print(link["href"])