Scrapy蜘蛛没有显示整个结果

时间:2014-02-23 09:18:58

标签: python web-scraping scrapy

大家好我试图从代码中的给定链接获得整个结果。但我的代码没有给出所有结果。此链接表示它包含2132个结果,但只返回20个结果。:

from scrapy.spider import Spider
from scrapy.selector import Selector
from tutorial.items import Flipkart
 class Test(Spider):
   name = "flip"
   allowed_domains = ["flipkart.com"]
   start_urls = ["http://www.flipkart.com/mobiles/pr?sid=tyy,4io&  otracker=ch_vn_mobile_filter_Mobile%20Brands_All"
]
  def parse(self, response):
     sel = Selector(response)
     sites = sel.xpath('//div[@class="pu-details lastUnit"]')
     items = []
     for site in sites:
         item = Flipkart()
         item['title'] = site.xpath('div[1]/a/text()').extract()
         items.append(item)
     return items**

1 个答案:

答案 0 :(得分:1)

这是因为该网站一次只显示20个结果,当用户滚动到页面底部时,使用JavaScript加载更多结果。

这里有两个选项:

  • 在网站上找到一个链接,在单个页面上显示所有结果(可疑它存在,但某些网站在传递可选查询字符串时可能会这样做)。
  • 处理蜘蛛中的JavaScript事件。默认的Scrapy下载程序不会这样做,因此您可以分析JS代码并以编程方式自己发送事件信号,或使用Selenium w / PhantomJS之类的东西让浏览器处理它。我推荐后者,因为它比自己解释JS的手动方法更能防止故障。有关详细信息,请参阅this question,Google周围有关于此主题的大量信息。