#python #curl #beautifulsoup #python-requests #jira-rest-api
#питон #локон #прекрасный суп #python-запросы #jira-rest-api
Вопрос:
Я работал над извлечением данных из jira без использования встроенного api jira, и я хотел просто выполнить запросы на получение ответов. Что я сделал, так это сначала проверил страницу jira, с которой я хотел получить данные json, а затем скопировал команду curl и преобразовал ее в python. Затем я использовал beautifulsoup для извлечения данных со страницы jira и использовал json.loads для преобразования json в объект python. Я заметил, что когда я прекращаю работать на несколько часов или возвращаюсь на следующий день, json.loads выдает ошибку, указывающую на функцию json.loads. Ниже приведено сообщение об ошибке. Чтобы исправить это, мне пришлось бы переписать команду curl со страницы и снова преобразовать ее в python. Я снова запускаю скрипт без ошибок, и все снова работает. Я спотыкаюсь или я что-то делаю не так?
Ниже приведено сообщение об ошибке:
**Traceback (most recent call last): json_data = json.loads(soup.text) File "C:Anaconda3_510envsmyenvlibjson__init__.py", line 346, in loads return _default_decoder.decode(s) return _default_decoder.decode(s) File "C:Anaconda3_510envsmyenvlibjsondecoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:Anaconda3_510envsmyenvlibjsondecoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 11 column 1 (char 11)** Below is my code that I used: import json import requests from bs4 import BeautifulSoup import pandas as pd cookies = { 'JSESSIONID': '', 'ROUTEID': '.node2', 'atlassian.xsrf.token': '', 'JiraSDSamlssoLoginV2': '', 'EdgeAccessCookie': '', } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0', 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.5', 'Referer': '', 'DNT': '1', 'Connection': 'keep-alive', } params = ( (''), ('', ''), ) response = requests.get('https://jira...../allData.json', headers=headers, params=params, cookies=cookies) if response.status_code != 200: # Definitely something's wrong print("Something went wrong!") if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") print("Successfully connected to server!") json_data = json.loads(soup.text) issues = json_data['issuesData']['issues'][4] print("Issues:", issues['assigneeName']) sprintsData = json_data['sprintsData']['sprints'][0] print("Start Date:", sprintsData['startDate']) print("End Date:", sprintsData['endDate'])
Комментарии:
1. Скорее всего, пустое тело ответа. Проверьте наличие len gt; 0 перед вызовом json.загружает
2. Спасибо. Я добавил печать(len(response.content)) и получил результат 25859.