BeautifulSoup не возвращает ничего, даже если элемент существует

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

Я пытаюсь очистить таблицу с этого сайта: https://maya.tase.co.il/funds?view=all

Когда я просматриваю внутренний код, я обнаружил этот класс для первой ячейки (справа налево): tableCol col_1 ng-scope

Теперь мой код выглядит следующим образом:

 import requests
from bs4 import BeautifulSoup


URL = 'https://maya.tase.co.il/funds?view=all'
page = requests.get(URL)

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

results = soup.find('div',{'class':'tableCol col_1 ng-scope'})

print(results)
 

Но при выполнении вышеуказанного я не получаю None в результате.
Это тот случай, когда я также пробую разные элементы.
Кто-нибудь знает возможное решение этой проблемы?
Не уверен, что я делаю неправильно.

Заранее благодарю, Uri

Комментарии:

1. Весь сайт находится позади JavaScript , поэтому либо исследуйте selenium , либо проверьте, есть ли, API потому что вы не будете очищать этот сайт bs4 , поскольку он просто не видит динамического содержимого.

2. Другой вариант — использовать прокси-сервис, который способен отображать содержимое, загруженное в JS. Примером, который может это сделать, является ProxyCrawl . Это платная услуга — я не связан с ними.

3. К ВАШЕМУ сведению, ‘To scrap’ (и scrapping / scrapper / scrapped) означает выбросить, выбросить. Используйте scrape / scraping / scraper /scraped

Ответ №1:

Попробуйте это:

 from bs4 import BeautifulSoup as soup
from selenium import webdriver
import time
url = 'https://maya.tase.co.il/funds?view=all'
driver = webdriver.Chrome()
driver.get(url)
time.sleep(10)
soup_page=driver.page_source
soup_page=soup(driver.page_source,'html.parser')
time.sleep(20)
results=soup_page.find('div',{'class':'tableCol col_1 ng-scope'}).text
print(results)
 

Они time.sleep() предназначены для правильной загрузки страницы.