web-dev-qa-db-ja.com

BeautifulSoupを使用してスパンタグの値を取得する

メンバー数を知りたいフェイスブックグループがたくさんあります。例は次のグループです。 https://www.facebook.com/groups/347805588637627/ ページのinspect要素を確認したところ、次のように保存されています。

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

ページから「9,413人のメンバー」を取得しようとしています。 BeautifulSoupを使用してみましたが、うまくいきません。

ありがとう

編集:

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)
5
newaccount1111

ページに複数のスパンタグがある場合:

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

解析されたスパンのtext属性を使用できます。

>>> 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'
1

Facebookはjavascryptを使用して、ボットによるスクレイピングを防止します。 Pythonでデータを抽出するには、Seleniumを使用する必要があります。

0
Tessaracter

複数のスパンタグがある場合は、これを試すことができます

from bs4 import BeautifulSoup

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

tags = soup('span')

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