Skip to content Skip to sidebar Skip to footer

Test If Children Tag Exists In Beautifulsoup

i have an XML file with an defined structure but different number of tags, like file1.xml: 11

Solution 1:

if tag.find('child_tag_name'):

Solution 2:

The simplest way to find if a child tag exists is simply

childTag = xml.find('childTag')
if childTag:
    # do stuff

More specifically to OP's question:

If you don't know the structure of the XML doc, you can use the .find() method of the soup. Something like this:

with open("file1.xml",'r') asdata, open("file2.xml",'r') as data2:
    xml = BeautifulSoup(data.read())
    xml2 = BeautifulSoup(data2.read())

    hasAttrBs = xml.find("myId")
    hasAttrBs2 = xml2.find("myId")

If you do know the structure, you can get the desired element by accessing the tag name as an attribute like this xml.document.subdoc.myid. So the whole thing would go something like this:

withopen("file1.xml",'r') as data, open("file2.xml",'r') as data2:
    xml = BeautifulSoup(data.read())
    xml2 = BeautifulSoup(data2.read())

    hasAttrBs = xml.document.subdoc.myid
    hasAttrBs2 = xml2.document.subdoc.myid
    print hasAttrBs
    print hasAttrBs2

Prints

<myid>1</myid>
None

Solution 3:

Here's an example to check if h2 tag exists in an Instagram URL. Hope you find it useful:

import datetime
import urllib
import requests
from bs4 importBeautifulSoupinstagram_url='https://www.instagram.com/p/BHijrYFgX2v/?taken-by=findingmero'
html_source = requests.get(instagram_url).textsoup= BeautifulSoup(html_source, "lxml")

if not soup.find('h2'):
    print("didn't find h2")

Solution 4:

you can handle it like this:

for child in xml.document.subdoc.children:
    if'myId' == child.name:
       return True

Solution 5:

You can do it with if tag.myID:

If you want to check if myID is the direct child not child of child use if tag.find("myID", recursive=False):

If you want to check if tag has no child, use if tag.find(True):

Post a Comment for "Test If Children Tag Exists In Beautifulsoup"