scrapy xpath select 类名元素
scrapy xpath select elements by classname
我遵循了 How can I find an element by CSS class with XPath?,它提供了用于按 classname 选择元素的选择器。问题是,当我使用它时,它检索到一个空结果“[]”,我知道事实上 url 中有一个 div classed "zoomWindow"刮擦 shell.
我的尝试:
scrapy shell "http://www.niceicdirect.com/epages/NICShop.sf/secAlIVFGjzzf2/?ObjectPath=/Shops/NICShop/Products/5696"
response.xpath("//*[contains(@class, 'zoomWindow')]")
我查看了许多提供各种选择器的资源。在我的例子中,该元素只有一个 class,所以使用 "concat" 的版本我用过但没有用并被丢弃。
我已经在虚拟机中安装了 ubuntu 和 scrapy,只是为了确保它不是我在 windows 上安装的错误,但我在 ubuntu 上的尝试得到了相同的结果.
我不知道还能尝试什么,您能看到选择器中的错字吗?
如果您检查 shell 中的 response.body
- 您会发现它不包含具有 class="zoomWindow"
:
的元素
In [3]: "zoomWindow" in response.body
Out[3]: False
但是,如果您在浏览器中打开该页面并检查 HTML 源,您会看到该元素就在那里。这意味着页面加载涉及 javascript 逻辑或额外的 AJAX 请求。 Scrapy 不是浏览器,也没有内置 javascript 引擎。换句话说,它只下载页面的初始 HTML 代码,而不会额外下载 js 和 css 文件以及 "executing" 它们。
对于初学者,您可以尝试使用 scrapyjs
下载处理程序和中间件。
要提取的图像也可以在 img
标签中使用 id="PreviewImage"
:
In [4]: response.xpath("//img[@id='PreviewImage']/@src").extract()
Out[4]: [u'/WebRoot/NICEIC/Shops/NICShop/547F/0D9A/F434/5E4C/0759/0A0A/124C/58F7/5708.png']
我遵循了 How can I find an element by CSS class with XPath?,它提供了用于按 classname 选择元素的选择器。问题是,当我使用它时,它检索到一个空结果“[]”,我知道事实上 url 中有一个 div classed "zoomWindow"刮擦 shell.
我的尝试:
scrapy shell "http://www.niceicdirect.com/epages/NICShop.sf/secAlIVFGjzzf2/?ObjectPath=/Shops/NICShop/Products/5696"
response.xpath("//*[contains(@class, 'zoomWindow')]")
我查看了许多提供各种选择器的资源。在我的例子中,该元素只有一个 class,所以使用 "concat" 的版本我用过但没有用并被丢弃。
我已经在虚拟机中安装了 ubuntu 和 scrapy,只是为了确保它不是我在 windows 上安装的错误,但我在 ubuntu 上的尝试得到了相同的结果.
我不知道还能尝试什么,您能看到选择器中的错字吗?
如果您检查 shell 中的 response.body
- 您会发现它不包含具有 class="zoomWindow"
:
In [3]: "zoomWindow" in response.body
Out[3]: False
但是,如果您在浏览器中打开该页面并检查 HTML 源,您会看到该元素就在那里。这意味着页面加载涉及 javascript 逻辑或额外的 AJAX 请求。 Scrapy 不是浏览器,也没有内置 javascript 引擎。换句话说,它只下载页面的初始 HTML 代码,而不会额外下载 js 和 css 文件以及 "executing" 它们。
对于初学者,您可以尝试使用 scrapyjs
下载处理程序和中间件。
要提取的图像也可以在 img
标签中使用 id="PreviewImage"
:
In [4]: response.xpath("//img[@id='PreviewImage']/@src").extract()
Out[4]: [u'/WebRoot/NICEIC/Shops/NICShop/547F/0D9A/F434/5E4C/0759/0A0A/124C/58F7/5708.png']