使用草率的CSS选择器定位ID

时间:2019-06-20 19:01:31

标签: python scrapy

HTML = '
    <div class="box">
        <div id="grid">
            <div class="content">hello</div>
        </div>
    </div>
'

-东西在这里发生-

response.css('div.thread [*] div.mix').getall()

*如何搜索没有课程的div?无论我在网上发现什么建议,我都会不断收到错误消息:“预期某物变了……”

3 个答案:

答案 0 :(得分:2)

您需要将#用于id属性:

response.css('div#grid')

或者您可以通过属性表示法选择它:

response.css('div[id="grid"]')

答案 1 :(得分:0)

您可以尝试类似的方法。逻辑是它将找到None(无),如果检查是否没有类,则第一个失败,然后将其附加到no_class_divs列表中。如果要基于ID查找,请接受@gangabass答案。如果您想查找没有class属性的div元素,那么我的答案应该起作用。

no_class_divs = []
divs = response.css("div")

for div in divs:
    if div.css('::attr(class)').extract_first():
        continue
    else:
        no_class_divs.append(div)

答案 2 :(得分:0)

如果要选择具有特定ID的div,则可以执行其他答案所建议的操作。

但是,如果要选择没有class属性的任何div,请使用:

.css('div:not([class])')