在scrapy shell中手动滚动的re和XPath选择器之间感知到的不匹配

在scrapy shell中手动滚动的re和XPath选择器之间感知到的不匹配,scrapy,Scrapy,我已打开所需URL的scrapy shell,并尝试选择p标记的所有实例,以便: <div class="foo"><p>Blah</p></div> 我错过了什么?我以为第[14]行会给出文档中p标记的所有实例。我试图选择的HTML被嵌入到一个块中,因此XPath认为它不是有效的HTML。对于新的scrapy用户来说,这似乎是一个常见的问题,因为页面上有ajax/javascript内容,URI中的标签可以检测到: 所有内容都驻留在html代码

我已打开所需URL的scrapy shell,并尝试选择p标记的所有实例,以便:

<div class="foo"><p>Blah</p></div>

我错过了什么?我以为第[14]行会给出文档中p标记的所有实例。

我试图选择的HTML被嵌入到一个块中,因此XPath认为它不是有效的HTML。对于新的scrapy用户来说,这似乎是一个常见的问题,因为页面上有ajax/javascript内容,URI中的标签可以检测到:

所有内容都驻留在html代码中,但您的浏览器需要运行javascript,以将哈希标记指向的任何内容填充到DOM本身中,XPath/bs4会查找这些内容

然而,如果你足够粗体(hacky)的话,Tt将可以通过正则表达式进行拉取。我也在考虑其他的选择。。。就像用脚本块的内容创建一个新的XMLDOM

In [12]: len(hxs.re("<div class=\"foo"))
Out[12]: 13

In [13]: len(hxs.select('//div[contains(@class, "foo")]'))
Out[13]: 1
In [14]: len(hxs.select('//p'))
Out[14]: 6