سؤال

أخلق رمز يحصل على عناوين URL للصورة من أي صفحات ويب، والرمز موجود في Python واستخدم Beutifulsouroup و httplib2. عندما أقوم بتشغيل التعليمات البرمجية، أحصل على الخطأ التالي:

Look me http://movies.nytimes.com          (this line is printed by the code)
Traceback (most recent call last):
File "main.py", line 103, in <module>
visit(initialList,profundidad)
File "main.py", line 98, in visit
visit(dodo[indice], bottom -1)
File "main.py", line 94, in visit
getImages(w)
File "main.py", line 34, in getImages
iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1499, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1230, in __init__
self._feed(isHTML=isHTML)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1263, in _feed
self.builder.feed(markup)
File "/usr/lib/python2.6/HTMLParser.py", line 108, in feed
self.goahead(0)
File "/usr/lib/python2.6/HTMLParser.py", line 148, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 226, in parse_starttag
endpos = self.check_for_whole_start_tag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 301, in check_for_whole_start_tag
self.error("malformed start tag")
File "/usr/lib/python2.6/HTMLParser.py", line 115, in error
raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: malformed start tag, at line 942, column 118

شخص ما يمكن أن يفسرني كيفية إصلاح أو جعل exption للخطأ

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

المحلول

لحضور هذا الخطأ على وجه التحديد، قم بتغيير التعليمات البرمجية الخاصة بك لتبدو كهذا:

try:
    iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))

except HTMLParseError:
    #Do something intelligent here

إليك المزيد من القراءة حول محاولة Python باستثناء الكتل:http://docs.python.org/tutorial/errors.html.

نصائح أخرى

هل تستخدم أحدث إصدار من BeautifulSoup؟
يبدو أن هذه مشكلة معروفة من الإصدار 3.1.x، لأنه بدأ استخدام محلل جديد (HTMLPARSER، بدلا من SGMLPARSER) هو أسوأ بكثير في معالجة HTML المشوه. يمكنك العثور على مزيد من المعلومات حول هذا جميل الموقع.
كحل سريع، يمكنك ببساطة استخدام إصدار أقدم (3.0.7.7).

حصلت هذا الخطأ عندما كان لدي السلسلة =& في مستند HTML الخاص بي. عندما استبدلت هذه السلسلة (في حالتي = و) ثم لم أعد تلقي خطأ تحليل.

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