必要な項目(各グループに共通)をループする際に選択するコンテナまたはグループがない場合の対処法はありますか?私はペーストされた要素からテキスト、日付、および著者を解析したいと思います。後の3つの結果は特定のグループやコンテナに属していないため、ループを作成する正しい方法を見つけることができません。ここでいくつかの要素から特定の項目を削り取ることができません
は要素です:
html = '''
<div class="view-content">
<p class="text-large experts-more-h">
<a href="/publications/commentary/we-have-no-idea-universal-preschool-actually-helps-kids">We Have No Idea if Universal Preschool Actually Helps Kids</a>
</p>
<p class="text-sans">
By David J. Armor. Washington Post. <span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="2014-10-21T09:34:00-04:00">October 21, 2014</span>.
</p>
<p class="text-large experts-more-h">
<a href="/publications/commentary/last-parent-resistance-collective-standardized-tests">At Last, Parent Resistance to Collective Standardized Tests</a>
</p>
<p class="text-sans">
By Nat Hentoff. Cato.org. <span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="2014-01-15T09:57:00-05:00">January 15, 2014</span>.
</p>
<p class="text-sans">
By Darcy Ann Olsen and Eric Olsen. Cato.org. <span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="1999-04-15T00:00:00-04:00">April 15, 1999</span>.
</p>
<p class="text-large experts-more-h">
<a href="/publications/commentary/day-care-parents-versus-professional-advocates-0">Day Care: Parents versus Professional Advocates</a>
</p>
<p class="text-sans">
By Darcy Ann Olsen. Cato.org. <span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="1998-06-01T00:00:00-04:00">June 1, 1998</span>.
</p>
</div>
'''
あなたが私のスクリプトを実行する場合は、あなたが掻き取った結果は最初の1であることがわかります。
from lxml.html import fromstring
tree = fromstring(html)
post= tree.cssselect(".text-large a")[0].text
date = tree.cssselect(".date-display-single")[0].text
author = tree.cssselect(".text-sans")[0].text.strip()
print(post+'\n', date+'\n', author)
結果:
We Have No Idea if Universal Preschool Actually Helps Kids
October 21, 2014
By David J. Armor. Washington Post.
このスクリプトを実行すると、このスクリプトが私が行ったすべての結果を解析できることがわかります:
のfrom lxml.html import fromstring
tree = fromstring(html)
count = tree.cssselect(".text-large a")
for item in range(len(count)):
post= tree.cssselect(".text-large a")[item].text
date = tree.cssselect(".date-display-single")[item].text
author = tree.cssselect(".text-sans")[item].text.strip()
print(post+'\n', date+'\n', author)
結果:
We Have No Idea if Universal Preschool Actually Helps Kids
October 21, 2014
By David J. Armor. Washington Post.
At Last, Parent Resistance to Collective Standardized Tests
January 15, 2014
By Nat Hentoff. Cato.org.
Day Care: Parents versus Professional Advocates
April 15, 1999
By Darcy Ann Olsen and Eric Olsen. Cato.org.
しかし、私は私の2番目のスクリプトでやったことは、まったくPython的ではなく、任意のデータが欠落している場合、それは間違った結果が得られます。だから、どのようにグループやコンテナを選択し、それをループして、それらのすべてを解析するのですか?前もって感謝します。
することも可能ですか? – Andersson
@ Andersson、私のスレッドであなたを持つことは、いつも大きな喜びです。 xpathまたはcssセレクタになってください。これらのほとんどは私があなたから学んだものです。どのような解決策もあなたの目的から成り立ちます。 Btw、私はCSSのセレクタにいくつかの制限があることがわかりますが、私はそれを非常に気に入っています.. – SIM
あなたは、*データが欠落していると間違った結果を出すでしょう* ...あなたはHTMLソースが異なる?この場合にもHTMLを共有できますか? – Andersson