При попытке чтения первой попавшейся мне страницы 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 все заработало!