如何提取与scrapy不同加载的数据

时间:2018-11-01 04:29:10

标签: web-scraping scrapy-spider

我正在尝试在类似这样的网址上提取产品评论

https://www.namastevaporizers.com/products/mighty-vaporizer

我从蜘蛛那里提取的东西在页面上什么都没有,但是评论中什么也没有,我认为这是因为评论加载的方式不同,但是不幸的是,这是我对松散的知识的终结。有人可以帮我吗?

这是我的蜘蛛

    import scrapy
    from scrapy.loader import ItemLoader
    from scrapy.loader.processors import TakeFirst, MapCompose
    from scrapy.spiders import Spider
    from Namaste.items import NPPItem

   class NPP(Spider):
name = 'Product_Pages'
start_urls = ['https://www.namastevaporizers.com/products/mighty-vaporizer'

def parse(self, response):
    item_loader = ItemLoader(item=NPPItem(), response=response)

    item_loader.add_css("Z_reviews", "div.yotpo-user-name") # gets nothing
    item_loader.add_css("Z_reviews", "div.content-title") # gets nothing
    item_loader.add_css("Z_reviews", "div.content-review") # gets nothing
    item_loader.add_css("Z_reviews", "div.yotpo") # gets some data but missing most stuff, this is the entire yotpo content wrapper

    item_loader.add_value("AAE_source_url", response.url) #works fine

    return item_loader.load_item()

1 个答案:

答案 0 :(得分:0)

此网站上的评论是由JS加载的,因此您需要像Chrome一样伪造请求

按照以下步骤操作,您将获得结果

  1. 打开您的chrome开发工具,转到“网络”标签,搜索(注意:搜索而不是过滤)评论内容,您将 请求(我收到了请求网址:https://staticw2.yotpo.com/batch
  2. 在chrome中复制curl命令
  3. 在shell中执行curl,如果成功,则下一步是解析curl,并在python代码中伪造它(curl实际上在此站点中有效,我尝试过)

  4. 您可以解析https://curl.trillworks.com/#python

  5. 中的卷发