Test if children tag exists in beautifulsoup Test if children tag exists in beautifulsoup python python

Test if children tag exists in beautifulsoup


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') as data, 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:

with open("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


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

import datetimeimport urllibimport requestsfrom bs4 import BeautifulSoupinstagram_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")