Элемент .select() позволяет мне получить элемент с веб-страницы на основе селектора css, но это будет искать всю веб-страницу. Как использовать .select(), но искать только дочерние элементы определенного элемента. Например:Python Beautiful Soup 4 Get Children of Element with .select()
<!-- Simplified example of the structure -->
<ul>
<li>
<div class="foo">foo content</div>
<div class="bar">bar content</div>
<div class="baz">baz content</div>
</li>
<li>
<!-- We can't assume that foo, bar, and baz will always be there -->
<div class="foo">foo content</div>
<div class="baz">baz content</div>
</li>
<li>
<div class="foo">foo content</div>
<div class="bar">bar content</div>
<div class="baz">baz content</div>
</li>
</ul>
Я хочу способ сказать: для <li>
[0] Foo содержала значение "foo content"
, бар содержал значение "bar content"
и т.д ..
В настоящее время мое решение заключается в следующем:
foos = soup.select("div.foo")
bars = soup.select("div.bar")
bazs = soup.select("div.baz")
for i in range(len(foos)):
print("{i} contains: {} and {} and {}".format(i=i, foos[i], bars[i], bazs[i]))
Это работает по большей части. Но он полностью разваливается, когда элемент отсутствует в одном из них. Как я показал в HTML, мы не можем предположить, что будут присутствовать три бара, baz и foo.
Таким образом, как бы я искал только детей из lis. Таким образом, я мог бы сделать что-то вроде этого:
for i in soup.select("li"):
#how would i do this:
foo = child_of("li", "div.foo")????
bar = child_of("li", "div.bar")????
baz = child_of("li", "div.baz")????