#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()
предназначены для правильной загрузки страницы.