0

我已经为我想要的 URL 打开了 scrapy shell,并试图选择 p 标签的所有实例,例如:

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

但似乎存在不匹配,我无法获得这些标签的所有实例。

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

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

事实上,我根本无法使用 XPath 获得 p 标记的完整说明......

In [14]: len(hxs.select('//p'))
Out[14]: 6

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

4

1 回答 1

0

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

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

但是,如果您足够大胆(hacky),Tt 将可以使用正则表达式进行拉取。我也在考虑其他替代方案……比如从脚本块的内容中创建一个新的 XML DOM。

于 2013-05-13T22:23:32.843 回答