簡體   English   中英

使用Python進行網絡抓取:TypeError:“ NoneType”類型的參數不可迭代

[英]Using Python for web scraping: TypeError: argument of type 'NoneType' is not iterable

import urllib.request, urllib.parse, urllib.error
import json

serviceurl = "http://python-data.dr-chuck.net/geojson?"

while True:

address = "Farmingdale State University"
if len(address) < 1 : 
    break

url = serviceurl + urllib.parse.urlencode({'sensor':'false','address':address})

print ('Retrieving',url)


uh =urllib.request.urlopen(url)
data = uh.read()
print ('Retrived',len(data),'characters')

try: (js) = json.loads(str(data))
except: (js) = None
if ('status' not in js) or (js['status'] != 'OK'):
    print ('==== Failure To Retrieve ====')
    print (data)
    continue

placeid = js["results"][0]['place_id']
print ("Place id",placeid)

在if('status'not in js)或(js ['status']!='OK')中的文件“”,第23行:

TypeError:“ NoneType”類型的參數不可迭代

如果js為None,則將出現此錯誤。 嘗試檢查js是否為True,然后再進一步檢查其內容。

現在,當您的代碼無法通過try塊並轉到js除外時,它將被設置為None,然后是否仍然檢查了感度。

例如

import urllib.request, urllib.parse, urllib.error
import json

serviceurl = "http://python-data.dr-chuck.net/geojson?"
address = "Farmingdale State University"
url = serviceurl + urllib.parse.urlencode({'sensor':'false','address':address})

while True:
    uh =urllib.request.urlopen(url)
    response = uh.read()
    data = json.loads(response)
    if 'status' in data and data['status'] != 'OK':
        continue
    #check place_id is exists in dictionary
    if 'results' in data and len(data['results']) > 0 and 'place_id' in data['results'][0]:
        print(data["results"][0]['place_id'])
        break

O / P:

ChIJScDUqFcq6IkRpvubNFOAVmw

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM