2017-08-26 13 views
3
<tr id="inmate_201700220865"> 
    <td class="row ">3</td> 
    <td class="row "><a href="javascript:" onclick="getInmatePreview(201700220865)">View</a> 
    <input type="hidden" id="bookingPhoto_201700220865" value="http://bookings.example.org/201708/20170826.AA8"> 
    <input type="hidden" id="bookingPhotoFile_201700220865" value="20170826.AA8"> 
    <input type="hidden" id="bookingPhotoFolder_201700220865" value="201708"> 
    <input type="hidden" id="bookingPhotoName_201700220865" value="LAST, FIRST LAST"> 
    <input type="hidden" id="inmateID_201700220865" value="277497"> 
    <input type="hidden" id="index_2" value="201700220865"> 
    <input type="hidden" id="curIndex_201700220865" value="2"></td> 
    <td class="row ">LAST<input type="hidden" id="bookingLastName_201700220865" value="LAST"></td> 
    <td class="row ">FIRST<input type="hidden" id="bookingFirstName_201700220865" value="FIRST"></td> 
    <td class="row ">LAST<input type="hidden" id="bookingLastName_201700220865" value="LAST"></td> 
    <td class="row ">08/26/2017</td> 
    <td class="row ">41</td> 
    <td class="row ">M</td> 
</tr> 

この表から最後の6行のテキストを削り取りようとしています。私は美しいスープを通してネストループを実行することなく、困難を抱えています。私は簡単な方法があると確信していますが、記録のためには、姓、名、姓、年齢、性別の最後の3行が必要です。以下は、tr全体を返す私のコードです。事前に特定のテキストのネストされたWebページを掻き集める

from bs4 import BeautifulSoup 
from urllib.request import urlopen 
import re 

#beautiful soup scrape 
scraped = urlopen('http://www.example.org/inmates/').read() 
soup = BeautifulSoup(scraped, 'html.parser') 

for item in soup.find_all('tr',{'id' : re.compile('^inmate') }): 
    for name in item ('td',{'class' : "row alt"}): 
     print (item) 

おかげ

答えて

0

すべてtrのタグを検索し、get_text()方法を使用してテキストを取得します。次にsplit()のテキストを\nに変更し、空の文字列をfilterで削除します。ここでは、必要なすべてのデータを1行で取得します。

from bs4 import BeautifulSoup 
from urllib.request import urlopen 
import re 

#beautiful soup scrape 
scraped = urlopen('http://www.example.org/inmates/').read() 
soup = BeautifulSoup(scraped, 'html.parser') 

for item in soup.find_all('tr', {'id' : re.compile('^inmate')}): 
    data = list(filter(None, item.get_text().split('\n'))) 
    print(data) 

出力

['3', 'View', 'LAST Name', 'FIRST Name', 'LAST Name', '08/26/2017', '41', 'M'] 

あなたは、単にsliceリスト最初の2つの要素

data = list(filter(None, item.get_text().split('\n')))[2:] 

出力

['LAST', 'FIRST', 'LAST', '08/26/2017', '41', 'M'] 
を削除する場合
+0

私はこのようにチェックしていないが、私はそれがうまくいくと確信している。ありがとうございました。 – Lyrics