使用css选择器使用scrapy在Reactjs页面上获取嵌套标记

时间:2017-11-06 23:40:59

标签: python html css css-selectors scrapy

我正在尝试使用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选择器工作以及为什么其他人不工作。与divbody, span, section, main, article, div, div, div

相同

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为原因是因为您在浏览器中看到的html代码可能是使用javascript在客户端生成的。我建议你检查使用scrapy收到的html(如果需要,可以将response.body保存在文件中)或在shell中检查它。 css选择器中的,类似于or语句。该href所需的数据可能位于html代码中的json中。