How do you find all list items between two tags with BeautifulSoup?
beautifulsoup, python
Solution
using findChildren like:
for ul in soup.find_all('ul'):
print 'ul start'
for idx, li in enumerate(ul.findChildren('li')):
if idx in range(3):
print li
output:
ul start
<li>Parent</li>
<li class="lev1">Child1</li>
<li class="lev1">Child2</li>
ul start
<li>Parent2</li>
<li class="lev1">Child4</li>
<li class="lev1">Child5</li>
however, as in most cases lxml and xpath is a superior solution:
from lxml import html
doc = html.parse('input.html')
print [ul.xpath('li[1] | li[2] | li[3]') for ul in doc.xpath('//ul')]
Problem
For example, I'd like to pull out only Child1, Child2, and Child3 out of the below list where it is after the first instance of h3 and before the next tag of h3 ``` <h3>HeaderName1<h3> <ul class="prodoplist"> <li>Parent</li> <li class="lev1">Child1</li> <li class="lev1">Child2</li> <li class="lev1">Child3</li> </ul> <h3>HeaderName2<h3> <ul class="prodoplist"> <li>Parent2</li> <li class="lev1">Child4</li> <li class="lev1">Child5</li> <li class="lev1">Child6</li> </ul> ```