HJNg333
HJNg333

Reputation: 21

BeautifulSoup get element inside li tag

I'm having trouble parsing html element inside li tag. This is my code:

from bs4 import BeautifulSoup
import requests

sess = requests.Session()

url = 'http://example.com'
page = sess.get(url)
page = BeautifulSoup(page.text)
soap = page.select('li.item')
print(soap.find('h3').text)

This is html code:

...
<li class="item">
    <strong class="item-type">design</strong>
    <h3 class="item-title">Item title</h3>
    <p class="item-description">
          Lorem ipsum dolor sit amet, dicam partem praesent vix ei, ne nec quem omnium cotidieque, omnes deseruisse efficiendi sit te. Mei putant postulant id. Cibo doctus eligendi at vix. Eos nisl exerci mediocrem cu, nullam pertinax petentium sea et. Vim affert feugait an.
     </p>
</li>
...

There are more than 10 li tag I just paste one of them.

Output error:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print(soap.find('h3').text)
AttributeError: 'list' object has no attribute 'find'

Upvotes: 1

Views: 1672

Answers (1)

HJNg333
HJNg333

Reputation: 21

Thanks to @DaveJ , this method worked:

[s.find('h3').text for s in soap]

Upvotes: 1

Related Questions