Goodreads声称我可以得到以根<GoodreadsResponse>
开头的XML,它的第一个子级是<book>
,第八个子级是image_url
。问题是,我无法让它识别正确的根(它打印root
而不是{
这是我现在的功能。我哪里出错了?在
def main(url, payload):
"""Retrieves image from Goodreads API endpoint returning XML response"""
res = requests.get(url, payload)
status = res.status_code
print(status)
parser = etree.XMLParser(recover=True)
tree = etree.fromstring(res.content, parser=parser)
root = etree.Element("root")
print(root.text)
if __name__ == '__main__':
main("https://www.goodreads.com/book/isbn/", '{"isbns": "0441172717", "key": "my_key"}')
goodreads的信息如下:
^{pr2}$
以下是最适合我的解决方案:
导入请求 从bs4导入BeautifulSoup
问题是XML内容被包装在标记中。使用漂亮的Soup“lxml-xml”解析器,而不是“lxml”,保留了CDATA标记中包含的内容,并允许它们被正确地解析。在
现在您的请求是HTML而不是XML。 您需要设置所需响应的格式:
https://www.goodreads.com/book/isbn/ISBN?format=FORMAT
你需要使用params而不是payload: Constructing requests with URL Query String in Python
另外,对于您正在执行的请求,您可以使用JSON。 https://www.goodreads.com/api/index#book.show_by_isbn
相关问题 更多 >
编程相关推荐