使用scrapy css选择器定位id

6fe3ivhb  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(193)
HTML = '
    <div class="box">
        <div id="grid">
            <div class="content">hello</div>
        </div>
    </div>
'

--这里发生的事情--

response.css('div.thread [*] div.mix').getall()
  • 我如何搜索没有类的divs?无论我在网上找到什么建议,我总是得到错误“期望的东西得到delim...”
sqserrrh

sqserrrh1#

您需要对id属性使用#

response.css('div#grid')

也可以通过属性表示法选择它:

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

zbq4xfa02#

你可以尝试这样的方法。逻辑是它会找到None,如果没有class,第一次if检查失败,然后把它附加到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)
y1aodyip

y1aodyip3#

如果您想选择具有特定id的div,可以按照其他答案的建议进行操作。
但是,如果要选择任何没有class属性的div,请用途:

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

v09wglhw4#

在Scrapy中也有Xpath方法。

response.xpath('//div[@id="grid"]/div/text()').get()

相关问题