【问题标题】:How to Scrape JSON Data Using Scrapy如何使用 Scrapy 抓取 JSON 数据
【发布时间】:2018-11-21 03:41:58
【问题描述】:

我正在使用scrapy,我正在尝试使用scrapy shell 测试我的选择器,但没有任何效果。我正在尝试在此网站上抓取 JSON 数据。

https://web.archive.org/web/20180604230058/https://api.simon.com/v1.2/tenant?mallId=231&key=40A6F8C3-3678-410D-86A5-BAEE2804C8F2&lw=true

我尝试使用选择器抓取数据

   response.css("body > pre::text").extract()

但是,这似乎不起作用。不知道怎么回事……

理想情况下,我只想从 JSON 数据中获取所有“名称:XXX”元素。因此,如果您知道如何具体选择那些,那也将非常有帮助!

目前我的代码是这样的

    # -*- coding: utf-8 -*-
    import scrapy # needed to scrape
    import sys    # need to import xlrd
    sys.path.extend("/Users/YoungFreeesh/anaconda3/lib/python3.6/site- 
    packages/") # needed to import xlrd
    import xlrd   # used to easily import xlsx file 

    class AmazonbotSpider(scrapy.Spider):
        name = 'ArchiveSpider'

        allowed_domains = ['web.archive.org']
        start_urls =['https://web.archive.org/web/20180604230058/https://api.simon.com/v1.2/tenant?mallId=231&key=40A6F8C3-3678-410D-86A5-BAEE2804C8F2&lw=true']

        def parse(self, response):
            print(response.body)

【问题讨论】:

  • 回复:“这似乎不起作用”——不确定这里是否有人读心。不过我可能是错的......
  • 我检查了网络日志,它从这个 url web.archive.org/web/20180604230058if_/https://api.simon.com/… 加载 json 文件。两个 url 之间的区别是 'if_'。查看此模式是否与您拥有的其他链接匹配。您可以使用此 hack 来获取您的数据。
  • @SP_ 谢谢!那行得通。

标签: python json web-scraping scrapy python-3.6


【解决方案1】:

由于内容在iframe 内,它是一个单独的页面,您必须先导航到 iframe。像一个链接,类似的东西:

urls = response.css('iframe::attr(src)').extract()
for url in urls :
    yield scrapy.Request(url...., target=parse_iframe)

然后定义一个新的 parse_iframe 方法来解析 iframe 响应。

【讨论】:

猜你喜欢
  • 2019-03-17
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多