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")