Do not。 HTMLパーサを使用します。たとえば、PythonのBeautifulSoupは使いやすく、これを非常に簡単に行うことができます。
これは、grep
がの行で動作することを覚えています。このパターンはの行ごとに一致し、の文字列では一致しません。
grep -A2 -E -m 1 '<div class="tracklistInfo">'
万一出力:あなたが使用することができますどのような
も試合後に行をプリントアウトする-A
ある
<div class="tracklistInfo">
<p class="artist">Diplo - Justin Bieber - Skrillex</p>
<p>Where Are U Now</p>
あなたはそれを配管することで、最後または最後から2番目の行を取得することができます〜tail
:
$ grep -A2 -E -m 1 '<div class="tracklistInfo">' | tail -n1
<p>Where Are U Now</p>
$ grep -A2 -E -m 1 '<div class="tracklistInfo">' | tail -n2 | head -n1
<p class="artist">Diplo - Justin Bieber - Skrillex</p>
sed
:
$ grep -A2 -E -m 1 '<div class="tracklistInfo">' | tail -n1
Where Are U Now
$ grep -A2 -E -m 1 '<div class="tracklistInfo">' | tail -n2 | head -n1 | sed 's/<[^>]*>//g'
Diplo - Justin Bieber - Skrillex
しかし、これは、気まぐれなブレイクする可能性が高い、と非常にきれいではない、と述べたように。ここでの方法により、BeautifulSoupと同じです:
html = '''<body>
<p>Blah text</p>
<div class="tracklistInfo">
<p class="artist">Diplo - Justin Bieber - Skrillex</p>
<p>Where Are U Now</p>
</div>
</body>'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
for track in soup.find_all(class_='tracklistInfo'):
print(track.find_all('p')[0].text)
print(track.find_all('p')[1].text)
これもtracklistInfo
の複数の行と連携 - xmllintを使用して;-)シェルコマンドに多くの作業が必要であることを
ありがとうございます。 は今、私は、次の再開となりました: フロー・ライダーは、アラウンド(5,4,3,2,1) ザッツパーフェクトを回し が、どのように私は前にスペースを削除することができますか?ニッキー・ジャム エルPERD ó N –
@Fabianはい、これはあなたが使用していない理由は 'カール - エンリケ・イグレシアス:私それは空間の文字が含まれているため とは、私は例えば を動作しないUTF8を使用することができます'/' grep'/'sed'でもHTMLパーサです;-) – Carpetsmoker
oh ok 私はBeautifulSoupを使ってみます。 はピップで...私は美しいインストール ...私はそれを得ることはありません..あなたに –