从通过requests.get()创建的json中转义反斜杠

wnrlj8wa  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(190)

我正在通过restapi url中的requests.get()收集数据,并修改该数据,然后通过requests.put()将修改后的数据再次推回到链接。问题是,我通过request.put()发送的修改后的html代码带有反斜杠字符,这导致了状态代码为500的内部服务器错误。我将向您展示我使用requests.put()命令收集的部分html代码,其中包含反斜杠。

<p><br /></p><table><colgroup><col /><col /><col /><col /><col /><col /></colgroup><tbody><tr><th><p>JIRA</p></th><th><p>Type</p></th><th><p>PR</p></th><th><p>Commit</p></th><th><p>Author</p></th><th><p>Date</p></th></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-5742\">IAPETUSZ-5742</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/9739\">9739</a></p></td><td><p>caf1229bb6a</p></td><td><p>ang</p></td><td><p>Thu, 4 Feb 2021 18:02:33 -0800</p></td></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-5991\">IAPETUSZ-5991</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/9971\">9971</a></p></td><td><p>db996d499cb</p></td><td><p>Mo</p></td><td><p>Fri, 19 Feb 2021 14:18:27 -0800</p></td></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-5971\">IAPETUSZ-5971</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/10067\">10067</a></p></td><td><p>216905485f1</p></td><td><p><br /></p></td><td><p>Fri, 26 Feb 2021 00:12:01 -0800</p></td></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-6200\">IAPETUSZ-6200</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/10126\">10126</a></p></td><td><p>ca28f68a0a5</p></td><td><p>Chowdhury</p></td><td><p>Tue, 9 Mar 2021 16:37:18 -0800</p></td></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-5608\">IAPETUSZ-5608</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/9510\">9510</a></p></td><td><p>b316a1c21be</p></td><td><p>Chowdhury</p></td><td><p><br /></p></td></tr><tr><td><p><a href=\"https://cejira.sandisk.com/browse/IAPETUSZ-5075\">IAPETUSZ-5075</a></p></td><td><p>Action-Item</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/8971\">8971</a></p></td><td><p>69fc6076c4f</p></td><td><p>ti</p></td><td><p>Fri, 11 Dec 2020 12:03:21 -0800</p></td></tr><tr><td><p><a href=\"https://cejira.ai.com/browse/IAPETUSZ-5757\">IAPETUSZ-5757</a></p></td><td><p>Bug</p></td><td><p><a href=\"https://bitbucket.ai.com/projects/FPGCSS/repos/cssh2p2/pull-requests/9666\">9666</a></p></td><td><p>dfe303b4260</p></td><td><p>rg</p></td><td><p>Fri, 29 Jan 2021 09:54:31 -0800</p></td></tr></tbody></table><p class=\"auto-cursor-target\"><br /></p><p><br /></p>

从上面可以看到,html代码https://bitbucket.ai.com/projects/cssai/repos/cssh2p2/pull-requests/9739“它有反斜杠,是导致问题的原因。反斜杠没有打印在这里,所以你看不到它,但它有上面的代码块。下面是我的代码:

import requests
from requests.auth import HTTPBasicAuth
from bs4 import BeautifulSoup

response = requests.get('https://confluence.ai.com/rest/api/content/525424594?expand=body.storage',
                        auth=HTTPBasicAuth('svc-Automation@ai.com', 'AIengineering1@wdc')).json()

soup = BeautifulSoup(response['body']['storage']['value'], 'html.parser')

html = soup.contents

for idx in range(0, len(html)):
    new_tag = soup.new_tag("a", href="https://bitbucket.ai.com/projects//pull-requests/")
    if idx == 2:
        print("Contents of TABLE %%%%%%%%%%%%%%%%%%")
        print(html[idx])
        print('\n')
        # [br.extract() for br in html[idx].find_all('br')]
        for br in html[idx].find_all('br'):
            br.extract()
            html.insert(idx, new_tag)
            html[idx].string = "MY_Link"

pass_string = str(soup)

headers = {
    'Content-Type': 'application/json',
}

data = '{"id":"525424594","type":"page", "title":"Feature Automation - POST data","space":{"key":"CSSai"},"body":{"storage":{"value":"' + pass_string + '","representation":"storage"}}, "version":{"number":2}}'

response = requests.put('https://confluence.ai.com/rest/api/content/525424594', headers=headers, data=data, auth=HTTPBasicAuth('svc-Automation@ai.com', 'AIengineering1@wdc'))

print(response.json())

我认为json数据不喜欢“and so requests.put()显示的是状态码500。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题