Как взять определенные элементы в нескольких списках на BeautifulSoup? - PullRequest
0 голосов
/ 16 февраля 2019

У меня проблемы с извлечением некоторых специфических тегов (и их строкового содержимого) и сохранением их в переменных (чтобы я мог получить эти переменные в файл CSV позже).

from bs4 import BeautifulSoup
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://www.khanacademy.org/profile/DFletcher1990/')
r.html.render(sleep=5)
soup=BeautifulSoup(r.html.html,'html.parser')

user_info_table=soup.find('table', class_='user-statistics-table')

for tr in user_info_table.find_all('tr'):
    tds=tr.find_all('td')
    print(tds)

Я хотел бы собрать:

  • "4 years ago" и сохраните его в переменной с именем date,
  • "932,915" и сохраните в переменной с именем points,
  • "372" и сохранить его в переменной с именем videos.

Я не совсем понимаю, как bs4.element.ResultSet ведет себя ...

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете просто рассматривать его как список.

from bs4 import BeautifulSoup
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://www.khanacademy.org/profile/DFletcher1990/')
r.html.render(sleep=10)
soup=BeautifulSoup(r.html.html,'html.parser')
user_info_table=soup.find('table', class_='user-statistics-table')
dates,points,videos=[tr.find_all('td')[1].text for tr in user_info_table.find_all('tr')]
print(dates,points,videos,sep="\n")

Вывод

4 years ago
932,915
372
...