2010-08-17 4 views
1

Я использую BeautifulSoup для анализа веб-сайтапитон BeautifulSoup добавить дополнительные закрывающие теги

request = urllib2.Request(url) 
    response = urllib2.urlopen(request) 
    soup = BeautifulSoup.BeautifulSoup(response) 

Я использую его, чтобы пройти через таблицу. Проблема, с которой я сталкиваюсь, заключается в том, что BS добавляет дополнительный тег конца таблицы в html, который не существует, который я проверил с помощью: print soup.prettify(). Таким образом, один из тд-тегов выходит из таблицы, и я не могу его выбрать.

+1

Можете ли вы опубликовать существенную структуру HTML-кода, который не работает? –

+0

тоже хотел бы ответить на этот вопрос. в моем случае, кажется, BS добавляет теги, которые * не * в исходный код страницы –

ответ

1

Как насчет поиска непосредственно для каждого тега вместо того, чтобы пытаться пройти в таблицу?

for td in soup.find("td"): 
     ... 

его не редкость обнаружить тег tbody, вложенный в таблицу автоматически, когда его нет в коде. Либо вы можете запрограммировать его, либо просто перейти прямо к тегу tr или td.

+0

Это хорошая мысль, и я пробовал это. Когда я запускаю код выше, он возвращает всю таблицу не каждый отдельный td. Я думаю, что BS ломает на этих страницах ужасный html ... бот уверен, что делать с этим, хотя – imns

+0

2 вещи, проверьте версию, которую вы используете. Если вы используете 3.1, вернитесь к 3.0 (http://www.crummy.com/software/BeautifulSoup/3.1-problems.html), попробуйте lxml, IMHO - лучший общий парсер, чем Soup. – ebt

Смежные вопросы