Как указали некоторые люди, он загружается через javascript, и BS4 на самом деле не работает с этим. Когда вы видите данные, которые загружаются через JavaScript, вы можете поспорить, что где-то есть вызов API. Вместо того, чтобы пытаться очистить данные, вы можете посмотреть, вызывает ли он объект JSON, и можете ли вы получить доступ к объекту JSON без какого-либо apikey.
Вам может понадобиться настроить некоторые шаблоны URL, если вам нужно что-то другое.
import requests, json
# Ignore the insecure warning
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
url = "https://www.yesplanet.co.il/il/data-api-service/v1/poster/10100/by-showing-type/SHOWING?lang=he_IL&ordering=desc"
# Get the page
response = requests.get(url, verify=False)
# Load into json
j = json.loads(response.text)
# process what you want
for poster in j['body']['posters']:
print(poster['url'], poster['featureTitle'])
Вывод из сценария выглядит следующим образом:
/films/bohemian-rhapsody רפסודיה בוהמית
/films/the-other-story סיפור אחר
/films/the-girl-in-the-spiders-web הנערה ברשת העכביש
/films/the-nutcracker-and-the-four-realms מפצח האגוזים וארבע הממלכות
/films/911 11 בספטמבר
/films/virgins אין בתולות בקריות
Доступны следующие атрибуты для каждого плаката: attributes
, code
, dateStarted
, featureTitle
, mediaList
, posterSrc
, url
и weight
.
Если вам интересно, как я обнаружил URL, я использовал консоль разработчика Chrome и перезагрузил страницу. Отфильтруйте по XHR (XMLHttpRequest), и вы увидите URL-адреса, содержащие данные.