Я пытаюсь прочитать веб-страницу с помощью модуля запросов в python, очистить прочитанные данные с помощью Beautifulsoup, изменить данные в объекте-супе и записать их обратно на ту же веб-страницу с помощью метода query.put ().
Есть ли что-то, что я должен сделать дополнительно в объекте супа, чтобы назначить его для полезной нагрузки JSON?
Модули, используемые для этой цели: 1. JSON 2. запросы 3. BeautifulSoup
Если полезная нагрузка JSON, которую я готовлю, не имеет суп-объекта, тогда запросы request.put () правильно записывают данные
response = requests.get(confluenceServerURL+getPageURL, verify=False, headers=headers)
# 200 OK is the response for the web page is accessible
if response.status_code == 200:
jsonD = response.json()
pageId = jsonD["results"][0]['id']
versionNum = jsonD["results"][0]['version']['number']
body = jsonD["results"][0]['body']['storage']['value']
soup = BeautifulSoup(response.content, 'html.parser')
input_str = "test string"
testMan = "found string"
for row in soup.find_all('tr'):
for node in row.find_all('td'):
if node.text == testMan:
node.string = input_str
newBody = soup
else: #response.status_code
logger.error("Error while obtaining page with given page title %s ", response.status_code)
exit(1);
## Space to write confluence page
logger.info('--------------Updating page--------------')
updatePageURL = "/rest/api/content/"+pageId
jsonPayload = {"id":pageId,"type":"page","title":pageTitle,"space":{"key":spaceKey},
"body":{"storage":{"value":"{0}".format(newBody),"representation":"storage"}},
"version":{"number":int(versionNum)+1}}
#print(jsonPayload)
# update page
response = requests.put(confluenceServerURL+updatePageURL,verify=False,data=json.dumps(jsonPayload),headers=headers)
logger.debug('URL for updating page is %s', response.url)
if response.status_code == 200:
logger.info("Page with id %s updated successfully",pageId)
#break;
else:
logger.error("Unable to update page with id %s",pageId)
logger.error(response.text)
Я получаю код ответа как 200 для request.put () но страница остается пустой, если используется BeautifulSoup.Если он находится непосредственно в формате JSON, страница успешно обновляется
INFO: conf_rest_get_page: -------------- Получение страницы ------------------- DEBUG: conf_rest_get_page: получение SMSESSION с доступного URL-адреса DEBUG: conf_rest_get_page: URL-адрес для получения страницы слияния: URL
INFO: conf_rest_get_page: -------------- Обновление страницы ---------------- ИНФОРМАЦИЯ: conf_rest_get_page: Страница с идентификатором 261042277 успешно обновлена
2019-06-09 10.26.58 ===== Завершена табличная процедура, Статус: True =====