Этот код для загрузки json-файла с URL-адреса работает хорошо, когда я набираю команды один за другим в оболочке python. Однако, когда я пытаюсь запустить модуль, содержащий этот код, я получаю: ValueError: No JSON object could be decoded
. Есть идеи, почему? Я запускаю python 2.7.Код работает в оболочке, но не с модуля
import urllib2
from urllib2 import Request
import json
import re
url1 = "http://www.skyscanner.net/flights/lond/nyca/130514/130525/airfares-from-london-to-new-york-in-may-2013.html"
req = Request(url1)
res = urllib2.urlopen(req)
the_page = res.read()
theText = str(the_page)
myre = re.compile(r'"SessionKey":"((([a-z0-9]+-)+)[a-z0-9]{12})"')
match = re.search(myre, theText)
print match.group(1)
url2 = "http://www.skyscanner.net/dataservices/routedate/v2.0/"+str(match.group(1))
htmltext = urllib2.urlopen(url2)
data = json.load(htmltext)
весь код прямо сейчас:
import urllib2
from urllib2 import Request, urlopen, URLError, HTTPError
import json
import re
url1 = "http://www.skyscanner.net/flights/lond/nyca/130514/130525/airfares-from-london-to-new-york-in-may-2013.html"
req = Request(url1)
res = urllib2.urlopen(req)
the_page = res.read()
theText = str(the_page)
myre = re.compile(r'"SessionKey":"((([a-z0-9]+-)+)[a-z0-9]{12})"')
match = re.search(myre, theText)
url2 = "http://www.skyscanner.net/dataservices/routedate/v2.0/%s" % str(match.group(1))
req2 = urllib2.Request(url2)
try:
response = urlopen(req2)
except HTTPError as e:
print 'The server couldn\'t fulfill the request.'
print 'Error code: ', e.code
except URLError as e:
print 'We failed to reach a server.'
print 'Reason: ', e.reason
else:
data = json.loads(response.read())
print data["SessionKey"]
Это потому, что ваш объект JSON не может быть декодирован, то есть 'htmltext' не является json. – danodonovan
, но зачем он работал в оболочке? – maddy
он не работает в моей оболочке, извините – danodonovan