Это работает для меня:Python TypeError при использовании xml.etree.ElemenTree и просит
import xml.etree.ElementTree as ET
from urllib2 import urlopen
url = 'http://example.com'
# this url points to a `xml` page
tree = ET.parse(urlopen(url))
Однако, когда я переключаюсь на requests
, что-то было не так:
import requests
import xml.etree.ElementTree as ET
url = 'http://example.com'
# this url points to a `xml` page
tree = ET.parse(requests.get(url))
Ошибка Trackback предъявляется ниже:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in()
----> 1 tree = ET.parse(requests.get(url, proxies={'http': '192.168.235.36:7788'}))
/usr/lib/python2.7/xml/etree/ElementTree.py in parse(source, parser)
1180 def parse(source, parser=None):
1181 tree = ElementTree()
-> 1182 tree.parse(source, parser)
1183 return tree
1184
/usr/lib/python2.7/xml/etree/ElementTree.py in parse(self, source, parser)
645 close_source = False
646 if not hasattr(source, "read"):
--> 647 source = open(source, "rb")
648 close_source = True
649 try:
TypeError: coercing to Unicode: need string or buffer, Response found
Итак, мой вопрос: Ва неправильно с requests
в моей ситуации и как я могу заставить его работать ET
с requests
?
Я пытался это сделать раньше, но не работал. Я получил это обратно: 'ParseError: элемент не найден: строка 1, столбец 0 ' – holys
Мои извинения, для текущего API требуется, чтобы вы использовали 'stream = True', чтобы исходные чтения работали правильно, в противном случае данные загружаются с раннего времени. Повторите попытку с обновленным ответом. –
Это не работает как есть, так как 'запросы' уже считывали данные, поступающие из сокета в конце первой строки. Передача 'stream = True' в качестве аргумента запроса обязательна – michaelmeyer