Test if an attribute is present in a tag in BeautifulSoup
I would like to get all the <script>
tags in a document and then process each one based on the presence (or absence) of certain attributes.
E.g., for each <script>
tag, if the attribute for
is present do something; else if the attribute bar
is present do something else.
Here is what I am doing currently:
outputDoc = BeautifulSoup(''.join(output))
scriptTags = outputDoc.findAll('script', attrs = {'for' : True})
But this way I filter all the <script>
tags with the for
attribute... but I lost the other ones (those without the for
attribute).
Solution 1:
If i understand well, you just want all the script tags, and then check for some attributes in them?
scriptTags = outputDoc.findAll('script')
for script in scriptTags:
if script.has_attr('some_attribute'):
do_something()
Solution 2:
For future reference, has_key has been deprecated is beautifulsoup 4. Now you need to use has_attr
scriptTags = outputDoc.find_all('script')
for script in scriptTags:
if script.has_attr('some_attribute'):
do_something()