BeautifulSoup: bad end tag "

Feb 03, 2012 16:42

При попытке чтения первой попавшейся мне страницы HTML наткнулся на дурацкую ошибку! Код:

import urllib2
url = 'http://www...'
page = urllib2.urlopen(url).read()
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(page)

В ответ получаю:

HTMLParser.HTMLParseError: bad end tag: u"", at line ..., column ...

Оказывается, это довольно древний способ обмана браузера, чтобы тот не рассматривал запись в данном месте js-кода как завершения тега script.

Перерыл кучу источников, пока не нашел это обсуждение:
http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=14281&start=0

Спасибо Bitbert3, который предложил следующее решение:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

url = "http://www.baseball-reference.com/teams/BOS/2009.shtml"

page = urllib2.urlopen(url).read()
page = re.sub(', '<\/scr', page)
soup = BeautifulSoup(page)

t = soup.find(id="team_batting")

Благодаря re.sub все заработало!

python

Previous post Next post
Up