Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:列表索引必须是整数或片,而不是在抓取JSON数据时出现的str错误_Python_Json_Web Scraping_Scrapy - Fatal编程技术网

Python TypeError:列表索引必须是整数或片,而不是在抓取JSON数据时出现的str错误

Python TypeError:列表索引必须是整数或片,而不是在抓取JSON数据时出现的str错误,python,json,web-scraping,scrapy,Python,Json,Web Scraping,Scrapy,我试着用scrapy刮取JSON数据。我在抓取JSON数据时出错: 更新: 前6个值工作正常。其他值不打印任何内容。如果我使用这些值,其他值也打印不适用。这些值存在,但不返回任何内容 导致错误的表达式如下所示: “网站”:价值[“来源”][“代理营销中心”][“0”][“网站”] “Facebook”: 值[''u source']['AgentMarketingCenter']['0']['Facebook\u URL'] “LinkedIn”: 值[''u source']['AgentMa

我试着用scrapy刮取JSON数据。我在抓取JSON数据时出错:

更新:

前6个值工作正常。其他值不打印任何内容。如果我使用这些值,其他值也打印不适用。这些值存在,但不返回任何内容

导致错误的表达式如下所示:

“网站”:价值[“来源”][“代理营销中心”][“0”][“网站”]

“Facebook”: 值[''u source']['AgentMarketingCenter']['0']['Facebook\u URL']

“LinkedIn”: 值[''u source']['AgentMarketingCenter']['0']['LinkedIn\u URL']

“Twitter”:值[''u source']['AgentMarketingCenter']['0']['Twitter']

“BIO”:值[''来源]['AgentMarketingCenter']['0']['BIO']


您想要收集的信息并不适用于所有dict,因此您需要使用带有默认值的
get
方法来避免出现错误

项目={
“全名”:值[“源”][“全名”],
“Primary Phonenumber”:值[''源]['primaryPhone'],
“电子邮件”:值[''来源]['primaryEmail'],
“城市”:值[''来源]['agentPrimaryLocation'][0]['City'],
“状态”:值[''源]['agentPrimaryLocation'][0]。获取('stateName','NA'),
“Zip”:值[''源]['agentPrimaryLocation'][0]['zipcode'],
“网站”:值[''u source']['AgentMarketingCenter'][0]。获取('Website','NA'),
“Facebook”:值[''U source']['AgentMarketingCenter'][0]。获取('Facebook\U URL','NA'),
“LinkedIn”:值[''U source']['AgentMarketingCenter'][0]。获取('LinkedIn'U URL','NA'),
“Twitter”:值[''u source']['AgentMarketingCenter'][0]。获取('Twitter','NA'),
“BIO”:值[''来源]['AgentMarketingCenter'][0]。获取('BIO','NA'),
}

试着不要在列表索引(零)周围加引号@S.Strempfer我试过了,但没用。TypeError:“builtin\u function\u或\u method”对象不是Subscriptables,这似乎是另一个错误。它在哪一行?@S.Strempfer第72行,在解析“City”:value.get[''u source']['agentPrimaryLocation'][0]['City'],TypeError:'builtin\u function\u或\u method'对象不可订阅为什么要放。放在那里?它不在前面的线路上!我知道有一个更简单的方法,我已经回答了这个问题的后续问题,事实上我们在这里发布了一些关于这个问题的交流。我使用了一个try/except块,它可能不是最有效或最简洁的。
import scrapy
import json

class MainSpider(scrapy.Spider):
    name = 'main'
    start_urls = ['https://experts.expcloud.com/api4/std?searchterms=AB&size=216&from=0']

    def parse(self, response):
        resp = json.loads(response.body)
        values = resp['hits']['hits']

        for value in values:

            try: 
                yield {
                    'Full Name': value['_source']['fullName'],
                    'Primary Phonenumber':value['_source']['primaryPhone'],
                    "Email": value['_source']['primaryEmail'],
                    "City": value['_source']['agentPrimaryLocation'][0]['city'],
                    "State": value['_source']['agentPrimaryLocation'][0]['state'],
                    "Zip": value['_source']['agentPrimaryLocation'][0]['zipcode'],
                    "Website": value['_source']['AgentMarketingCenter']['0']['Website'],
                    "Facebook": value['_source']['AgentMarketingCenter']['0']['Facebook_URL'],
                    "LinkedIn": value['_source']['AgentMarketingCenter']['0']['LinkedIn_URL'],
                    "Twitter": value['_source']['AgentMarketingCenter']['0']['Twitter'],
                    "BIO": value['_source']['AgentMarketingCenter']['0']['Bio'],
                }

            except KeyError:
                yield { 
                    'Full Name': 'N/A',
                    'Primary Phonenumber': 'N/A',
                    'Email': 'N/A',
                    'City': 'N/A',
                    'State': 'N/A',
                    'Zip': 'N/A',
                    'Website': 'N/A',
                    'Facebook': 'N/A',
                    'LinkedIn': 'N/A',
                    'Twitter': 'N/A',
                    'BIO': 'N/A',
                }