2016-04-11 23 views
-3

Bir web sitesi kazıyıcı üzerinde ilerleme kaydetmeye başlıyorum, ama ben iki sapma ile karşılaştım. İşte kod ilk:Web sitesi python3 ve beautifulsoup ile kazıma 4

import requests 
from bs4 import BeautifulSoup 

r=requests.get("http://www.nytimes.com") 
soup=BeautifulSoup(r.text) 

headlines=soup.find_all(class_="story-heading") 
for headline in headlines: 
print (headline) 

Sorular

  • Neden find_all(class_= blahblahblah) yerine sadece find_all(blahblahblah) kullanmak gerekiyor? story-heading'un kendi başına bir sınıf olduğunun farkındayım, ancak find_all'u kullanarak tüm HTML'yi arayamıyorum ve aynı sonuçları elde edemiyorum? BeautifulSoup için notlar find_all.a tüm anchor etiketlerini bir HTML belgesine geri döndürüyor, neden find_all("story-heading") aynı şeyi yapmıyor?

    Çünkü bunu yapmaya çalışırsam, HTML içindeki tüm "hikaye-yönelim" örneklerini bulabilir ve bunları iade edebilir mi? Bu etikette her şeyi iade etmek için python almaya çalışıyorum. Bu benim en iyi tahminim.

  • Tüm bu gereksiz gereksiz kodları neden alıyorum? Tüm istekleri bulmam, bana hikaye başlık etiketindeki her şeyi göstersin mi? Sadece belirtmeye çalıştığımdan çok daha fazla metin alıyorum.

+0

Kodunuzu kod olarak biçimlendirin ve sadece yazıdaki normal metni değil, okuyabilelim – Keatinge

cevap

1

Güzel Çorba, CSS Seçici kullanmanıza izin verir. şöyle "CSS seçicisi"

Sen sınıf "hikaye başlığı" ile tüm öğeleri bulabilirsiniz için doc bak:

soup.find_all(".story-heading") 

Eğer id yıllardan arıyorsanız oluyor yerine, sadece do

soup.find_all("#id-name")