Селектор CSS в элементе beautifulsoup4 вложен неправильно?Python

Программы на Python
Ответить
Anonymous
 Селектор CSS в элементе beautifulsoup4 вложен неправильно?

Сообщение Anonymous »

Похоже, я что-то упускаю из того, как Beautiful Soup (4.14.3) выполняет селекторы CSS для своих объектов `bs4.element.Tag`. Я выбираю элемент, вызываю другой селектор для этого элемента, и результат не соответствует ожидаемой вложенности:

Код: Выделить всё


Some terms: Foo


Some details.
With Bar term.


Код выбора:

Код: Выделить всё

import bs4
from bs4 import BeautifulSoup
from sys import argv

with open(argv[1], 'r') as f:
example_s = f.read()

soup = BeautifulSoup(example_s, 'html.parser')

# 1 the correct selection:
print("Correct:", soup.select("div p dfn"))

div = soup.select_one("div.foo")
# 2 incorrect, does not match 1:
sel = div.select("p dfn")

print("Div:", div)
print("Incorrect:", sel)
print(bs4.__version__)
Возвраты:

Код: Выделить всё

Correct: [Bar]
Div:
Some terms: Foo

Some details.
With Bar term.

Incorrect: [Foo, Bar]
4.14.3
Похоже, что селектор div.select("p dfn") был применен к корневому элементу вместо div или чего-то в этом роде. Это ожидаемое поведение в Beautiful Soup?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»