العثور على بطاقة الأم لسلسلة نصية مع ElementTree / lxml
-
06-07-2019 - |
سؤال
وأنا أحاول لاتخاذ سلسلة من النص، و "انتزاع" بقية النص في الفقرة / وثيقة من أتش تي أم أل.
وبلدي الحالي هو نهج يحاول العثور على "بطاقة الأم" من السلسلة في HTML والتي تم تحليلها مع lxml. (إذا كنت تعرف من طريقة أفضل لمعالجة هذه المشكلة، وأنا كلي آذان صاغية!)
وعلى سبيل المثال، ابحث في شجرة ل "STRING TEXT HERE" وعودة "ص" علامة. (لاحظ أنني لن أعرف التخطيط الدقيق للأتش تي أم أل مسبقا)
<html>
<head>
...
</head>
<body>
....
<div>
...
<p>TEXT STRING HERE ......</p>
...
</html>
وشكرا لمساعدتكم!
المحلول
وهذا هو وسيلة بسيطة للقيام بذلك مع ElementTree. أنها لا تتطلب إدخال HTML الخاص بك هو XML صالح (حتى لقد أضفت علامات نهاية المناسبة لHTML الخاص بك):
import elementtree.ElementTree as ET
html = """<html>
<head>
</head>
<body>
<div>
<p>TEXT STRING HERE ......</p>
</div>
</body>
</html>"""
for e in ET.fromstring(html).getiterator():
if e.text.find('TEXT STRING HERE') != -1:
print "Found string %r, element = %r" % (e.text, e)
لا تنتمي إلى StackOverflow