2016-07-03 2 views
0

그래서 교육 목적으로이 페이지의 표를 긁어 시도하고 디코딩 할 수 없었다 : https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016Scraping- 오류가 없음 JSON 객체가

내 인쇄 응답이

<Response [200]> 

을 제공 이것은 의미가 좋다 ,권리? 내가 변수에() response.json를 넣어 시도 할 때 내가 얻을 '에 ValueError를 : 없음 JSON 개체 디코딩 할 수 없었다'을 인쇄하려면 여기를

내 코드입니다 :

import requests 


headers = { 
'accept-encoding': 'gzip, deflate, sdch, br', 
'x-requested-with': 'XMLHttpRequest', 
'accept-language': 'nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4', 
'user-agent': 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 
'accept': 'application/json, text/javascript, */*; q=0.01', 
'referer': 'https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016', 
'model-last-mode': 'GgVBlUgZgMvkAZA4DkgCYAYJauGyQ5BQAQW5ZLGd5qk=', 
'authority': 'www.whoscored.com', 
'cookie': 'visid_incap_774904=E5yi1BIhTqKa7QY7CTHvbCgWQlcAAAAAQUIPAAAAAAAbmGcCJZ/yA5tiB2vsu1g6; crtg_rta=cc970250d%3Bcc300600d%3Bhw970250d%3B; incap_ses_128_774904=GEttC+rfv2wXecdRg7/GAUAaeVcAAAAA5ZSbfyTF02TorJxEKZxkUg==; _gat=1; _ga=GA1.2.1512369618.1463948865', 
} 

params = { 
'category': 'shots', 
'subcategory': 'zones', 
'statsAccumulationType': '0', 
'field': '', 
'tournamentOptions': '', 
'timeOfTheGameStart': '0', 
'timeOfTheGameEnd': '5', 
'teamIds': '', 
'stageId': '12496', 
'sortBy': 'Rating', 
'sortAscending': '', 
'page': '1', 
'numberOfTeamsToPick': '', 
'isCurrent': 'true', 
'formation': '' 
} 

response = requests.get('https://www.whoscored.com/StatisticsFeed/1/GetTeamStatistics?category=shots&subcategory=zones&statsAccumulationType=0&field=&tournamentOptions=&timeOfTheGameStart=0&timeOfTheGameEnd=5&teamIds=&stageId=12496&sortBy=Rating&sortAscending=&page=1&numberOfTeamsToPick=&isCurrent=true&formation=', headers=headers, params=params) 


data = response.json() 
print data 

답변

1

당신은 인쇄있어 개체, text 속성을 호출해야합니다. 응답 객체에 json 속성이 없습니다.

result = requests.get(url) 
print result.text 

당신은 JSON 결과를 얻고 싶은 경우에, 당신은 문자열 인 결과를 분석하고 딕셔너리로 ​​변환 한 다음 JSON로를 설정하는 json.dumps를 사용해야합니다은

+0

이 반환하는 것 JSON이 아닌 HTML 인 캡슐라가 보호 한 것처럼 보입니다. – Kyriediculous

+0

이 경우에는 BeautifulSoup 또는 이와 유사한 것을 사용하여 긁어서 dict, json 요소로 변환해야합니다. –

+0

감사합니다. BS와 Selenium 모두 작동 할 수 있다고 읽었습니다. 나는 그들 모두를 조사 할 것이다. 당신의 도움을 주셔서 감사합니다 ! – Kyriediculous