如何使用Splash刮擦JS页面?

时间:2017-08-24 08:23:31

标签: python scrapy splash

我正在抓住这个链接,但我没有成功,我没有犯任何错误,我的价值观空白。

我正在使用python scrapy和splash。怎么了?有人帮帮我吗?

这是我的蜘蛛代码:

  # -*- coding: utf-8 -*-
  import scrapy
  from scrapy_splash import SplashRequest
  from boom.items import BoomItem
  from scrapy.selector import HtmlXPathSelector


  class OrumcekSpider(scrapy.Spider):
        name = 'orumcek'
        start_urls = ['example.com']

def start_requests(self):
    for url in self.start_urls:
      yield SplashRequest(url=url, callback=self.parse, endpoint='render.html')

def parse(self, response):
        item = BoomItem()
        item["BrandName"] = response.xpath("//*[@id='data-item']/div/a/span/text()").extract()
        item["BrandSector"] = response.xpath("//*[@id='data-item']/div[3]/span/text()").extract()

        return item

2 个答案:

答案 0 :(得分:0)

我无法在页面上找到id等于data-item的任何元素,无论是在页面源中还是在检查它时。但是,有些元素具有属性 data-item。因此使用Splash渲染可能没有问题,您只需将XPath修改为

item["..."] = response.xpath("//*[@data-item]/...")

答案 1 :(得分:0)

您有data-item,但它不是id,在图片中我向您展示了如何复制选择器 xpath

enter image description here

这个页面的渲染需要时间,你应该等到找到你想要的元素。

  while not splash:select('.your-element') do
    splash:wait(0.1)
  end