2016-03-21 12 views
0

Öznitelikler kullanarak güzel çorbadan çıkardığım bir listeye sahibim.Bir div etiketinden metin ayıklama

Liste denetimsiz HTML'dir. Bu listedeki bir yer, her zaman B00 ile başlayan bir desenin bulunduğu bir metindir, rastgele metin içeren div etiketinden birden çok sayfadan çıkarılması gereken 10 basamaklı bir sayıdır.

g_info listenin tüm html içeriklerinin bulunduğu bir listeye sahiptir. Bu liste Buna benzer bir şeydir:

[<div id="details_readonly" style="">\n<h2>Lorem Ipsum         <small></h2>\n        Lorem Ipsum text <br/>Lorem Ipsum text 

Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem 

Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text 


No<br/> B00EQ0CKRQ <br/>Lorem Ipsum text Lorem Ipsum text 

Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem 

Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum 

text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text  
</div>] 

ben kullanıyorum g_info içinde desen bulmaya çalışıyorum bir hata alıyorum y=re.compile(r'B00(.{7})',g_info) regex:

y = re.compile(r'B00(.{7})',g_info) 
    File "C:\Python27\lib\re.py", line 190, in compile 
    return _compile(pattern, flags) 
    File "C:\Python27\lib\re.py", line 232, in _compile 
    p = _cache.get(cachekey) 
TypeError: unhashable type: 'ResultSet' 

birileri beni içeriği ayıklamak için yardımcı olabilir

yukarıda belirtilen modelle div etiketinden.

cevap

0
import re 
g_info = '<div id="details_readonly" style="">\n<h2>Lorem Ipsum         <small></h2>\n        Lorem Ipsum text <br/>Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text No<br/> B00EQ0CKRQ <br/>Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text </div>]' 
print re.search('B00.{7}', g_info).group(0) 

Çıkışlar:

B00EQ0CKRQ 

GÜNCELLEME: ''.join(g_info) bir dizeye liste g_info dönüştürecektir ve regex çalışması gerekir

g_info = soup.find_all("div", {"id":"details_readonly"}) 
print g_info ## this prints out all the contents of the div tag. 

y = re.search('B00.{7}', ''.join(g_info)).group(0) 
print y 

: kodunuzu kullanma.

+0

Yürütmeyi denemeye çalışırken bu hatayı alın. 'print re.search ('B00. {7}', g_info) .group (0) Dosya" C: \ Python27 \ lib \ re.py ", satır 142, arama döndürme _compile (desen, bayraklar)) .search (string) TypeError: beklenen dize veya arabellek ' –

+0

Teşekkürler str içine cast g_info yazmak zorunda kaldı ve sonra çalıştı. Teşekkürler –

+0

@bojra: bana katılma işlevini kullanarak ne yaptığınızı söyler misiniz? –

İlgili konular