Я пытался в гневе разобрать следующий репрезентативной HTML экстракт, используя BeautifulSoup и LXML:Python - Разбор HTML класс
[<p class="fullDetails">
<strong>Abacus Trust Company Limited</strong>
<br/>Sixty Circular Road
<br/>DOUGLAS
<br/>ISLE OF MAN
<br/>IM1 1SA
<br/>
<br/>Tel: 01624 689600
<br/>Fax: 01624 689601
<br/>
<br/>
<span class="displayBlock" id="ctl00_ctl00_bodycontent_MainContent_Email">E-mail: </span>
<a href="mailto:[email protected]" id="ctl00_ctl00_bodycontent_MainContent_linkToEmail">[email protected]</a>
<br/>
<span id="ctl00_ctl00_bodycontent_MainContent_Web">Web: </span>
<a href="http://www.abacusiom.com" id="ctl00_ctl00_bodycontent_MainContent_linkToSite">http://www.abacusiom.com</a>
<br/>
<br/><b>Partners(s) - ICAS members only:</b> S H Fleming, M J MacBain
</p>]
Что я хочу сделать:
Extract 'сильный' текст в company_name
Извлечение тегов 'бр' текст в company_line_x
Извлечение текста '' MainContent_Email в company_email
Извлечение текста '' MainContent_Web в company_web
Проблемы, у меня был:
1) Я мог бы извлечь весь текст с помощью .findall (текст = True), но в каждой строке было много отступов
2) Иногда возвращаются символы не ASCII, и это приведет к сбою csv.writer. Я не уверен на 100%, как справиться с этим правильно. (Ранее я использовал unicodecsv.writer)
Любые советы были бы очень ценными!
В данный момент моя функция только принимает данные страницы и изолирует «р класс»
def get_company_data(page_data):
if not page_data:
pass
else:
company_dets=page_data.findAll("p",{"class":"fullDetails"})
print company_dets
return company_dets
Как вы получаете данные страницы в первую очередь? – alecxe
Спасибо за ответ. Я извлекаю данные с помощью модуля Requests и просто передаю данные страницы этой функции. –
Хорошо, вы используете ответный текст или атрибут контента? – alecxe