Терапия для петлевого узла детей - PullRequest
0 голосов
/ 14 марта 2019
<html>
    <body>
        <div class="root-div">
            <h1>This is H1</h1>
            <ul>UL</ul>
            <h2>This is H2</h2>
            <img src="www.ttttt.com.png">
            <ul>UL</ul>
            <a href="www.ttttt.com">
            <h3>This is H3</h3>
        </div>
    </body>
</htnl>

Если я знаю все теги, я могу получить всю информацию.

response.css('div.root-div > h1::text').extract_first()
response.css('div.root-div > h2::text').extract_first()
response.css('div.root-div > a::attr(href)').extract_first()

Покупайте, если я не знаю, какой тег есть в <div class="root-div">??????</div>. Как я могу получить каждый текст.

Например

for tag in response.css('div.root-div ??????????'):
    if tag == "div":
       print("do something")
    else if tag == "img":
       print("do something")
    else:
       print("")

1 Ответ

0 голосов
/ 14 марта 2019

Если вам нужно знать тег для каждого дочернего элемента, сделайте следующее:

for item in response.css('div.root-div *'):
    tag = item.root.tag
    if tag == 'div':
        # ...

Однако, если вы действительно хотите получить текст для дочерних элементов, сделайте следующее:

for text in response.css('div.root-div ::text').getall():
    # ...
...