Выбор этого конкретного имени класса div среди, но не среди других div, у которых есть другие классы, также доступные с помощью beautifulsoup или selenium - PullRequest
0 голосов
/ 04 августа 2020

это сложная проблема с моей стороны, когда я застрял в части веб-скребка и не смог продолжить.

https://i.stack.imgur.com/r4tN2.png

Мне нужны только ответы на сетку в al oop

Я пробовал использовать

grid_cell=driver.find_element_by_css_selector('#tags-browser > div:nth-child(2) > div.mt-auto.grid.jc-space-between.fs-caption.fc-black-300 > div:nth-child(1)')

Теперь при отображении текста тега будет отображаться 2061748 вопросов

grid_cell.text

, но это только для одного элемента.

Что, если бы я хотел иметь его в al oop, где мне нужно все количество для всех тегов, доступных на этой странице ?

В этом случае, как показано на изображении, я повторил a для l oop над '' 'javascript' '' и '' 'java' '', но get_element_using_css_selector предоставит специфику c считается для java или javascript, но не для обоих.

А также, если я выберу

tag_counts = body.find_all('div', class_='grid_cell')

, тогда я получу и другие классы которые находятся под ячейкой сетки на прилагаемом рисунке, которые должны быть исключены.

Пожалуйста, предложите какое-нибудь решение. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 августа 2020

Есть 2 способа добиться этого:

Первый вариант: Удалите теги, которые вы не хотите очищать, а затем очистите теги, которые вам нужны. Например:

tags = body.find_all('div', class_='grid_cell s-anchor') # TODO: add full class name (to remove this tag) 
for tag in tags:
    tag.extract() # Remove tag from body

tags = body.find_all('div', class_='grid_cell') # This will contain all the tags you want.

Второй вариант: L oop через родительский тег html и получить первый тег с помощью find (). Например:

containers = body.find_all('div', class_='mt-auto grid') # Find parent tag 
for container in containers:
    tag = container.find('div', class_='grid_cell') # Get first tag in the container div
    print(tag.text.strip())
...