Красивый суп не найдя никаких элементов в классе - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь определить цену веб-сайта с помощью BeautifulSoup:

Класс контейнера показан ниже:

enter image description here

Пример объектов, которые я хочу получить из этого класса, показан ниже: enter image description here

enter image description here

Но я неНе знаю, почему не найдено объектов под содержащим классом c1_t2i.Всегда печатается значение 0 в print(len(containers))

Код показан ниже:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

myUrl = "https://www.lazada.com.ph/catalog/?q=lighters&_keyori=ss&from=input&spm=a2o4l.home.search.go.239e6ef0RMwbfH"

uClient = uReq(myUrl)
pageHtml = uClient.read()
uClient.close()
pageSoup = soup(pageHtml, "html.parser")
containers = pageSoup.findAll("div", {"class": "c1_t2i"})
print(len(containers))

1 Ответ

0 голосов
/ 10 декабря 2018

Если вы откроете страницу и просмотрите страницу источника.Вы не сможете найти класс "c1_t2i".Класс, который вы ищете, кажется "c3e8SH".

Я, однако, не уверен, почему это происходит.Я использую хром.Можете ли вы использовать хром и проверить возможно?Вы также можете распечатать проанализированный HTML-код и выполнить поиск текста "c1_t2i" или "c3e8SH", в зависимости от того, что там доступно.

РЕДАКТИРОВАТЬ 1:

Мне кажется, я понимаю проблему.HTML-код, который вы видите при проверке элемента, генерируется с использованием Javascript.Однако те же классы не доступны в необработанном HTML, который вы получаете с помощью сценария.Вам нужно использовать что-то вроде PhantomJS для выполнения JS и получения результирующего HTML.Проверьте эту тему.

РЕДАКТИРОВАТЬ 2:

Вы также можете попробовать отключить JS и посмотреть на страницу, которая появляется, а затемпосмотрите, можете ли вы выбрать имя класса из базового HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...