2016-07-28 1 views
3

Я пытаюсь использовать beautifulsoup4 для анализа серии веб-страниц, написанных на XHTML. Я предполагаю, что для достижения наилучших результатов я должен сочетаться с синтаксическим анализатором xml, и единственное, что поддерживается beautifulsoup, насколько мне известно, - lxml.lxml не найден в Beautiful Soup

Однако, когда я пытаюсь запустить следующее согласно документации beautifuloup:

import requests 

from bs4 import BeautifulSoup 
r = requests.get(‘hereiswhereiputmyurl’) 
soup = BeautifulSoup(r.content, ‘xml’) 

это приводит к следующей ошибке:

FeatureNotFound: Couldn't find a tree builder with the features you  
requested: xml. Do you need to install a parser library? 

Его сводит меня с ума. Я нашел запись двух других пользователей, которые размещены с той же проблемой

Здесь How to re-install lxml?

и вот bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

Я использовал этот пост (ссылка непосредственно ниже этой линии) для переустановки и обновления LXML, а также обновленный красивый суп, но я все еще получаю ошибку. Installing lxml, libxml2, libxslt on Windows 8.1

BeautifulSoup работает иначе, потому что я побежал следующий код и он представил меня своей обычной стене язык разметки суп = BeautifulSoup (r.content, «html.parser»)

Вот мои данные для Windows 8.1 Python 3.5.2 Я использую Spyder язя в Анаконда 3, чтобы запустить свой код (который по общему признанию, я не знаю много о)

Я уверен, что его messup, что новичок будет делать, потому что, как Я заявил, что у меня очень мало опыта программирования.

Как решить эту проблему, или если это известная ошибка, вы бы, ребята, рекомендовали мне просто использовать lxml самостоятельно, чтобы очистить данные.

+1

Что происходит, когда вы импортируете lxml? – DeepSpace

+0

Как насчет 'soup = BeautifulSoup (r.content, 'lxml')'? – har07

+0

Если вы знаете xpath и css, я бы использовал lxml над bs4, но ваша проблема, скорее всего, вы установили lxml для одной версии python, и вы используете другую. –

ответ

0

Я думаю, что проблема r.content. Обычно это дает исходное содержание ответа, что не обязательно является HTML-страницей, оно может быть json и т. Д.
Попробуйте подавать r.text в суп.

soup = BeautifulSoup(r.text, ‘lxml’) 

Лучше:

r.encoding='utf-8' 

затем

page = r.text 

soup = BeautifulSoup(page, 'lxml') 

если вы собираетесь разобрать XML, вы можете использовать 'lxml-xml' в синтаксический анализатор.