Я пытаюсь отсканировать некоторые вопросы и ответы Amazon, в частности, этот: https://www.amazon.com/ask/questions/Tx1AYFFVMESHMZV/ref=ask_ql_ql_al_hza
Этот раздел HTML для каждого вопроса (для более подробной информации можно проверить HTML в инструментах разработчика)):
<span class="askExpanderContainer noScriptNotDisplayExpander">
<span class="askShortText">
They definitely help stretch the toes. I'm hoping to avoid a hammer toe that has been developing on one foot, and I'm not sure they're doing that, but I read that one way to avoid hammer toes developing is to stretch the toes, so I figure they will help in the long run and probably won't do any harm. From the beginning…
<a class="a-link-normal askSeeMore" href="#">
see more
</a>
</span>
<span class="askLongText">
They definitely help stretch the toes. I'm hoping to avoid a hammer toe that has been developing on one foot, and I'm not sure they're doing that, but I read that one way to avoid hammer toes developing is to stretch the toes, so I figure they will help in the long run and probably won't do any harm. From the beginning never hurt my toes, so I didn't have an adjustment period like some people have described. I use them every day, and I enjoy being calm and still for half an hour or 45 minutes while all I do is stretch my toes. That's worth something too!
<a class="a-link-normal askSeeLess" href="#">
see less
</a>
</span>
</span>
Мне нужен полный ответ, но когда я пытаюсь найти элемент askLongText, я получаю следующую ошибку:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such
element: Unable to locate element: {"method":"css selector","selector":"span.askLongText"}
(Session info: chrome=66.0.3359.181)
(Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac OS X 10.13.4 x86_64)
Однако я могууспешно извлеките элемент askShortText.
Вот код Python:
driver.get(url)
title = driver.find_element_by_css_selector('p.a-size-large.askAnswersAndComments.askWrapText').text
answers_section = driver.find_element_by_css_selector('div.a-section.askAnswersAndComments.askWrapText')
answers = answers_section.find_elements_by_xpath('div[@id]')
for ans in answers:
answer = ans.find_element_by_css_selector('span.askLongText').text
print answer
Примечание. Последние три элемента ответа не содержат класс askLongText.Я рассмотрю исключение позже, но не поместил его здесь для целей тестирования.В любом случае, первые три элемента содержат такой класс, и его содержимое должно быть напечатано, но этого не происходит