Привет, ЛОР!
Столкнулся с такой задачей: нужно с помощью python2 взять исходник html-страницы, далее удалить из неё определенные xpath'ы (к примеру, выпиливать блоки с рекламой, т.к. они не несут в себе никакой полезной информации), и вернуть модифицированный html-код.
Сейчас делаю так:
@staticmethod
def remove_unnecessary_tags(url, html_source):
try:
name = re.findall('.*?/?\.?(\w+)\.\w{2,4}/', url)[0]
except KeyError:
print 'Cannot find what the name in %s' % url
return html_source
original = html.fromstring(html_source)
try:
return original.xpath('.//*[not(%s)]' % x.get_xpaths(name))
except Exception as e:
print e
return original
Проблем а в том, что возвращаю я уже не html-код, а список из
<Element div at 0xb58fad9c>
<Element script at 0xb58fadc4>
<Element script at 0xb58fadec>
<Element noscript at 0xb58fae14>
<Element div at 0xb58fae3c>
<Element img at 0xb58fae64>
У них есть методы elem.tag и elem.text, но ни один из них не позволяет получить полноценную строку типа <div class=«bla»>blabla</div>, как было изначально.
Конечно, остается еще вариант выпиливания кусков по regexp, но я не уверен что это хорошая идея.
Что посоветуешь, ЛОР?