Bir web sitesindeki (http://brooklynexposed.com/events/) içeriği ayıklamak için BeautifulSoup kullanmaya çalışıyorum. Bu birlikte adı Komedi Show liste dışı kesiyorBeautifulSoup tüm html'leri ayıklamıyor (otomatik olarak bir sayfanın html'sini siliyor)
<li class="event">
9:00pm - 11:00pm
<br/>
<a href="http://brooklynexposed.com/events/entry/5432/2013-07-16">
Comedy Sh
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>
:
import urllib
import bs4 as BeautifulSoup
url = 'http://brooklynexposed.com/events/'
html = urllib.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(html)
print soup.prettify().encode('utf-8')
çıkışı aşağıdaki gibi html kesmeye görünüyor: Ben aşağıdaki kodu çalıştırabilirsiniz sorunun bir örnek olarak Son kapanış etiketlerine kadar gelen tüm html ile. Html'nin çoğunluğu otomatik olarak kaldırılıyor. Sayısız web sitesinde benzer şeyleri fark ettim, eğer sayfa çok uzunsa, BeautifulSoup tüm sayfayı ayrıştırmaz ve sadece metni keser. Bunun için herhangi birinin çözümü var mı? Eğer BeautifulSoup bu tür sayfaları ele alamıyorsa, başka herhangi bir kütüphaneyi prettify() ile benzer işlevlere sahip biri yapar mı?
Kodunuz benim için gayet iyi çalışıyor. Eğer ağ aktarımı bu noktadan kesildiyse (bu yüzden sadece Komedi Sh''e kadar yüklediniz), HTML ayrıştırıcısı tüm açık etiketleri 'kapatacak ve tam olarak ne yaptığınızı göreceksiniz. –
Benim için tüm içerik var. 'Çorba' nesnesini oluşturmak için kodunuzdan başlayarak: '>>> len (unicode (çorba))' geri döndürür 107578' Hangi BS sürümünü kullanıyorsunuz? 4.2.0 kullanıyorum. –
İlginç, Python 2.7 ile 4.2.1 kullanıyordum. Ancak 3.2 kullandığımda işe yaramış görünüyor. Bir zaman aşımı sorunu olmazdı çünkü orijinal HTML'yi bir dosyaya yazdırırsam, tüm metinler ortaya çıktı. 2.7 için bir çözüm üzerinde başka herhangi bir fikir? Aksi halde kodumu açmaya başlama zamanı. – user2540231