問題:當我嘗試使用下面的第一個代碼時,我得到了json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0). 所有這些代碼昨天都運行良好,昨天它也停止了作業。今天它也不起作用。我剛剛啟動了第二個代碼(也在下面)的奇怪部分,它作業了一次,然后在另一次啟動后又遇到了同樣的問題!
錯誤是由以下行拋出的:
post_info = instagram_web_api.media_info2("<SHORTCODE>")
請幫助:(。俄羅斯堆疊溢位沒有答案。
我用 
uj5u.com熱心網友回復:
問題在于您正在使用的庫和 instagram 之間:后者沒有將 JSON 發送到您期望的位置。
如果你看一下它的來源,media_info2它看起來像這樣:
def media_info2(self, short_code):
"""
Alternative method to get media info. This method works for carousel media.
:param short_code: A media's shortcode
:param kwargs:
:return:
"""
headers = {
'User-Agent': self.user_agent,
'Accept': '*/*',
'Accept-Language': 'en-US',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'close',
'Referer': 'https://www.instagram.com',
'x-requested-with': 'XMLHttpRequest',
}
info = self._make_request(
'https://www.instagram.com/p/{0!s}/'.format(short_code),
query={'__a': '1', '__b': '1'},
headers=headers)
...
在您的回溯之后,錯誤在make_request. 所以我們去查看源代碼,我們看到重要的幾行是:
self.logger.debug('REQ DATA: {0!s}'.format(data))
res = self.opener.open(req, data=data, timeout=self.timeout)
...
if return_response:
return res
response_content = self._read_response(res)
self.logger.debug('RES BODY: {0!s}'.format(response_content))
return json.loads(response_content)
我們現在擁有了進行一些手動除錯所需的一切,因為程式是這樣作業的:
- 設定標題并將它們和 url 傳遞給 make_request
- 從url獲取資料
- 將日期決議為 json
- 回傳資料
我們可以組合我們自己對 的呼叫opener,或者甚至只是curl在傳遞給 的 url 上運行_make_request,或者臨時修改代碼以列印一些內容并更詳細一些。但在這種情況下,我們有一個更簡單的選擇:代碼已經為我們除錯了,我們只需要告訴它冗長:
import logging
logging.basic_config(level=logging.DEBUG)
把它放在失敗腳本的頂部并再次運行它,它應該會噴出大量資料,告訴你它在做什么。由于它列印了整個 return body,您應該得到它回傳的任何內容,并且能夠弄清楚發生了什么。
記住......使用來源,盧克。
好吧,這太糟糕了,但知道代碼在做什么的唯一方法是閱讀源代碼。python的偉大之處在于它的可讀性。將此與嘗試通過閱讀來找出一些 C 庫進行比較......
uj5u.com熱心網友回復:
問題是因為 Instagram 有時不允許很多請求,所以在我多次請求之后,它阻止了我從帖子中獲取任何資訊的訪問權限。解決方案是在API中登錄。就這樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335601.html
標籤:Python 解析 蟒蛇请求 instagram-api
