Rajs123
Rajs123

Reputation: 663

Soup parser not able to extract class information

While running query: soup.find_all('div')

I get results:

<div class="class-link">
<a class="btn btn-primary" href="abc" style="text-decoration: underline">
                                                    See all</a>
</div>, <div class="sota-table-link">
<a class="btn btn-primary" href="abc" style="text-decoration: underline">
                                                    See all</a>
</div>, <div class="class-link">

Though when I run: soup.find_all('div', _class='class-link') I get empty list.

What causes this issue and how can I get correct div?

Upvotes: 1

Views: 20

Answers (3)

QHarr
QHarr

Reputation: 84465

Personally I find css selectors a lot cleaner

soup.select('div.class-link')

where the . is a css class selector

Upvotes: 0

vx3r
vx3r

Reputation: 295

According to the BeautifulSoup4 documentation

it must be class_ and not _class

So you code mus be changed to

print(soup.find_all("div", class_="class-link"))

Upvotes: 1

m01010011
m01010011

Reputation: 1122

Pass the class as key-value pairs to the attrs parameter, instead, like this:

soup.find_all('div', {'class': 'class-link'})

Result:

[<div class="class-link">
<a class="btn btn-primary" href="abc" style="text-decoration: underline">
                                                    See all</a>
</div>, <div class="class-link"></div>]

Upvotes: 1

Related Questions