【问题标题】:how to scrape product names from website using scrapy shell如何使用scrapy shell从网站上抓取产品名称
【发布时间】:2016-12-05 14:46:40
【问题描述】:

请帮我从这个链接中抓取产品名称: http://www.gap.com/browse/category.do?cid=5168&scrollTo=product353401012&scrollTo=product353401012#pageId=0&department=75

产品名称包含在 div 中的 class="product-card--name" 中。当我运行 :response.css('div.product-card--name::text').extract() ,它返回一个空列表。

请同时提供 css 和 xpath 命令。

【问题讨论】:

标签: python-2.7 css xpath scrapy-shell


【解决方案1】:

正如 Gaby 所说,内容是动态加载的。您可以通过以下方式查看:

  • 用chrome打开网站报废(firefox也有办法 这样做)
  • 按 F12 打开 DevTools
  • 选择“网络”标签
  • 选择“XHR”作为过滤器
  • 进行搜索(或重新加载网站)

XHR filter

您将看到一个项目列表,您想要的是:

search?cid=5168&isFacetsEnabled=true&globalShippingCountryCode=&globalShippingCurrencyCode=&locale=en_US&pageId=0

如果你点击它,你可以看到带有标题的 http 请求和带有你想要的所有数据的响应。

要在scrapy上执行此操作有点复杂,您必须废弃此链接,但使用“POST”方法而不是默认方法(“GET”)。从一个scrapy spider执行此操作:

yield scrapy.Request(url, self.parse_data, method="POST", headers=headers, body=body)

URL 应该是您在 XHR 过滤器中找到的那个,使用的方法是“POST”,您应该复制我们之前找到的标题,并且在正文中包含您正在搜索的特定参数。 从那里你会得到一个 JSON 响应,你可以将它保存到一个文件或做任何你想做的事情。

如果您需要更多详细信息,请告诉我。

【讨论】:

  • 能否请您帮我获取获取产品名称的完整代码。我是scrapy的新手。为什么即使产品名称是HTML也不能被刮掉。 Click on this.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
相关资源
最近更新 更多