newaccount1111
newaccount1111

Reputation: 133

Get value of span tag using BeautifulSoup

I have a number of facebook groups that I would like to get the count of the members of. An example would be this group: https://www.facebook.com/groups/347805588637627/ I have looked at inspect element on the page and it is stored like so:

<span id="count_text">9,413 members</span>

I am trying to get "9,413 members" out of the page. I have tried using BeautifulSoup but cannot work it out.

Thanks

Edit:

from bs4 import BeautifulSoup
import requests

url = "https://www.facebook.com/groups/347805588637627/"
r  = requests.get(url)
data = r.text
soup = BeautifulSoup(data, "html.parser")
span = soup.find("span", id="count_text")
print(span.text)

Upvotes: 11

Views: 48461

Answers (4)

user9406862
user9406862

Reputation:

If you have more than one span tag you can try this

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

tags = soup('span')

for tag in tags:
  print(tag.contents[0])

Upvotes: 2

Trect
Trect

Reputation: 2955

Facebook uses javascrypt to prevent bots from scraping. You need to use selenium to extract data on python.

Upvotes: 1

Henrik
Henrik

Reputation: 452

In case there is more than one span tag in the page:

from bs4 import BeautifulSoup
soup = BeautifulSoup(your_html_input, 'html.parser')
span = soup.find("span", id="count_text")
span.text

Upvotes: 8

Balthazar Rouberol
Balthazar Rouberol

Reputation: 7180

You can use the text attribute of the parsed span:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<span id="count_text">9,413 members</span>',   'html.parser')
>>> soup.span
<span id="count_text">9,413 members</span> 
>>> soup.span.text
'9,413 members'

Upvotes: 3

Related Questions