Я начал использовать BeautifulSoup, и, к сожалению, он работает не так, как ожидалось.
В следующей ссылке https://www.globes.co.il/news/article.aspx?did=1001285059 включает следующий элемент:
<div class="sppre_message-data-wrapper">... </div>
Я попытался получить этот элемент, написав следующий код:
html = urlopen("https://www.globes.co.il/news/article.aspx?did=1001285059") bsObj = BeautifulSoup(html.read(), features="html.parser") comments = bsObj.find_all('div', {'class': ["sppre_message-data-wrapper"]}) print(comments)
'comments' дал пустой массив
Это в фрейме. Сделайте запрос в iframe src
https://spoxy-shard2.spot.im/v2/spot/sp_8BE2orzs/post/1001285059/?elementId=6a97624752c75d958352037d2b36df77&spot_im_platform=desktop&host_url=https%3A%2F%2Fwww.globes.co.il%2Fnews%2Farticle.aspx%3Fdid%3D1001285059&host_url_64=aHR0cHM6Ly93d3cuZ2xvYmVzLmNvLmlsL25ld3MvYXJ0aWNsZS5hc3B4P2RpZD0xMDAxMjg1MDU5&pageSize=1&count=1&spot_im_ph__prerender_deferred=true&prerenderDeferred=true&sort_by=newest&conversationSkin=light&isStarsRatingEnabled=false&enableMessageShare=true&enableAnonymize=true&isConversationLiveBlog=false&enableSeeMoreButton=true
пй
from bs4 import BeautifulSoup as bs import requests r = requests.get('https://spoxy-shard2.spot.im/v2/spot/sp_8BE2orzs/post/1001285059/?elementId=6a97624752c75d958352037d2b36df77&spot_im_platform=desktop&host_url=https%3A%2F%2Fwww.globes.co.il%2Fnews%2Farticle.aspx%3Fdid%3D1001285059&host_url_64=aHR0cHM6Ly93d3cuZ2xvYmVzLmNvLmlsL25ld3MvYXJ0aWNsZS5hc3B4P2RpZD0xMDAxMjg1MDU5&pageSize=1&count=1&spot_im_ph__prerender_deferred=true&prerenderDeferred=true&sort_by=newest&conversationSkin=light&isStarsRatingEnabled=false&enableMessageShare=true&enableAnonymize=true&isConversationLiveBlog=false&enableSeeMoreButton=true') soup= bs(r.content,'html.parser') comments = [item.text for item in soup.select('.sppre_message-data-wrapper')] print(comments)
BeautifulSoup не поддерживает глубокий комбинатор (который, по-моему, уже удален), но вы можете увидеть это в браузере (Chrome), используя:
*/deep/.sppre_message-data-wrapper
В конечном счете не имело бы значения, поскольку в ответе на запросы от исходного URL-адреса отсутствует содержимое.
Вы могли бы альтернативно использовать селен, я думаю, и переключиться на iframe. Хотя есть идентификатор 401bccf8039377de3e9873905037a855-iframe, то есть # 401bccf8039377de3e9873905037a855-iframe для find_element_by_css_selector, для переключения на более надежный (в случае динамического идентификатора) селектор будет .sppre_frame-container iframe
401bccf8039377de3e9873905037a855-iframe
.sppre_frame-container iframe