python - 使用 Scrapy 从动态 JSON 响应中提取内容

标签 python json web-scraping scrapy web-crawler

我想从如下所示的 JSON 输出中提取“avail”值。

{
    "result": {
        "code": 100,
        "message": "Command Successful"
    },
    "domains": {
        "yolotaxpayers.com": {
            "avail": false,
            "tld": "com",
            "price": "49.95",
            "premium": false,
            "backorder": true
        }
    }
}

问题是 ['avail'] 值位于 ["domains"]["domain_name"] 下,我不知道如何获取域名。

下面有我的蜘蛛。第一部分工作正常,但第二部分则不行。

import scrapy
import json
from whois.items import WhoisItem

class whoislistSpider(scrapy.Spider):
    name = "whois_list"
    start_urls = []
    f = open('test.txt', 'r')
    global lines
    lines = f.read().splitlines()
    f.close()
    def __init__(self):
        for line in lines:
            self.start_urls.append('http://www.example.com/api/domain/check/%s/com' % line)

    def parse(self, response):
        for line in lines:
            jsonresponse = json.loads(response.body_as_unicode())
            item = WhoisItem()
            domain_name = list(jsonresponse['domains'].keys())[0]
            item["avail"] = jsonresponse["domains"][domain_name]["avail"]
            item["domain"] = domain_name
            yield item

提前感谢您的回复。

最佳答案

目前,它尝试通过 "('%s.com' % line)" 键获取值。

您需要正确进行字符串格式化:

domain_name = "%s.com" % line.strip()
item["avail"] = jsonresponse["domains"][domain_name]["avail"]

关于python - 使用 Scrapy 从动态 JSON 响应中提取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310986/

相关文章:

python - DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象

javascript - 通过 http 的 JSON 响应在 Angular 中不起作用

Python网页抓取无法找到网页中的所有标签

c# - 是否可以反序列化 Azure 搜索的结果?

如果 firebase 查询未运行,iOS 回调 (Swift Firebase)

python - 网络抓取时欺骗IP地址(python)

java - 如何在 Java 中筛选 Ajax 站点?

python - Keras 破坏 Anaconda Prompt

python - 如何使用 OpenCV 在图像中获取多个对象(例如小扁 bean 种子)的平均 RGB 值

python - 如何使用 pandas 用名称替换变量