سؤال

وأريد للعثور على جميع تعريفات الأنماط في ملف XHTML مع lxml.etree.findall. هذا يمكن أن يكون بهذه البساطة

elems = tree.findall('link[@rel="stylesheet"]') + tree.findall('style')

ولكن المشكلة مع تعريفات الأنماط CSS هي أن المسائل النظام، ومنها مثلا.

<link rel="stylesheet" type="text/css" href="/media/css/first.css" />
<style>body:{font-size: 10px;}</style>
<link rel="stylesheet" type="text/css" href="/media/css/second.css" />

وإذا تم تطبيق محتويات العلامة style بعد القواعد في اثنين من العلامات link، قد تكون النتيجة مختلفة تماما عن واحد حيث يتم تطبيق قواعد من أجل التعريف.

وهكذا، كيف أود أن تفعل البحث التي inlcudes كلا link[@rel="stylesheet"] وstyle؟

هل كانت مفيدة؟

المحلول

وممكن استخدام XPATH:

data = """<link rel="stylesheet" type="text/css" href="/media/css/first.css" />
<style>body:{font-size: 10px;}</style>
<link rel="stylesheet" type="text/css" href="/media/css/second.css" />
"""

from lxml import etree

h = etree.HTML(data)

h.xpath('//link[@rel="stylesheet"]|//style')

[<Element link at 97a007c>,
 <Element style at 97a002c>,
 <Element link at 97a0054>]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top