سؤال

كنت أحاول الخروج من bit.ly أبي لتقصير وحصلت عليه للعمل.فإنه يعود إلى بلدي النصي وثيقة شمل.كنت أرغب في استخراج العلامة ولكن يبدو أنه لا يمكنني تحليلها بشكل صحيح.

askfor = urllib2.Request(full_url)
response = urllib2.urlopen(askfor)
the_page = response.read()

لذلك تحتوي الصفحة على مستند شمل.حاولت:

from xml.dom.minidom import parse
doc = parse(the_page)

هذا يسبب خطأ.ماذا أفعل خطأ?

هل كانت مفيدة؟

المحلول

لا تقدم رسالة خطأ لذا لا يمكنني التأكد من أن هذا هو الخطأ الوحيد.لكن, xml.minidom.parse لا يأخذ سلسلة.من دوسترينغ ل parse:

تحليل ملف إلى دوم بواسطة اسم الملف أو كائن الملف.

يجب أن تحاول:

response = urllib2.urlopen(askfor)
doc = parse(response)

منذ response سوف تتصرف مثل كائن ملف.أو يمكنك استخدام parseString الطريقة في minidom بدلا من ذلك (ثم تمر the_page كما الحجة).

تحرير:لاستخراج عنوان ورل ، سوف تحتاج إلى القيام به:

url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data

نتيجة getElementsByTagName هي قائمة بجميع العقد مطابقة (واحد فقط في هذه الحالة). url هو عنصر كما لاحظت ، والذي يحتوي على عقدة نصية فرعية ، والتي تحتوي على البيانات التي تحتاجها.

نصائح أخرى

from xml.dom.minidom import parseString
doc = parseString(the_page)

انظر وثائق ل xml.dom.minidom.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top