我正在尝试使用CSS选择器获取突出显示的href
值,但目前尚未成功。
我正在使用scrapy shell
并尝试过:
response.css('body > span > section')
但它会返回[]
我还尝试response.css('div')
查看它是否可以获取任何div
代码,但仍会返回[]
使用chrome的devtool来获取返回的css选择器
#react-root > section > main > article > div > div._cmdpi > div:nth-child(1) > div:nth-child(2) > a
我对Chrome提供的css使用了response.css()
,但它也返回了[]
然而,当我尝试:
response.css('body, span, section, main, article, div, div, div')
我退回了这个:
[<Selector xpath='descendant-or-self::body | descendant-or-self::span | descendant-or-self::section | descendant-or-self::main | descendant-or-self::article | descendant-or-self::div | descendant-or-self::div | descendant-or-self::div' data='<body class="">\n \n <span id="r'>, <Selector xpath='descendant-or-self::body | descendant-or-self::span | descendant-or-self::section | descendant-or-self::main | descendant-or-self::article | descendant-or-self::div | descendant-or-self::div | descendant-or-self::div' data='<span id="react-root"></span>'>]
我很困惑为什么某些css选择器工作以及为什么其他人不工作。与div
与body, span, section, main, article, div, div, div
答案 0 :(得分:2)
我认为原因是因为您在浏览器中看到的html代码可能是使用javascript在客户端生成的。我建议你检查使用scrapy收到的html(如果需要,可以将response.body
保存在文件中)或在shell中检查它。
css选择器中的,
类似于or
语句。该href所需的数据可能位于html代码中的json中。