9

ile kazıma nasıl yapılır? Genel bir Instagram hesabındaki resimleri kırpmak istiyorum. Ben bs4 ile oldukça tanıdık bu yüzden başladım. Chrome'daki eleman denetçisini kullanarak, resimlerin sıralanmamış bir listede olduğunu ve li'nin 'fotoğraf' olduğunu not ettim, bu yüzden, ne demek istediğimi anladım, bulup bulmak için o kadar zor olamaz, değil mi?BeautifulSoup

Yanlış: bir şey (aşağıda kodu) dönmez ve yakında kod elemanı denetçisi gösterilen ve isteklerinden çekti kod ı çekti kodunda aynı AKA hiçbir sırasız liste olmadığını fark isteklerden

Öğe denetçisinde görünen kodu nasıl alabilirim?

from bs4 import BeautifulSoup 
import requests 
import re 

r = requests.get('http://instagram.com/umnpics/') 
soup = BeautifulSoup(r.text) 
for x in soup.findAll('li', {'class':'photo'}): 
    print x 

Yardımlarınız için teşekkür ederim:

Bilgin için bu sırasız liste yoktu çünkü işe yaramadı, hangi başlatmak için benim kod oldu.

+0

Bu sayfa, JavaScript'in yoğun kullanımını sağlar. Tarayıcınız tarafından indirilenleri görmek için sayfa * kaynak * (Chrome: Görünüm -> Geliştirici -> Kaynağı Görüntüle) sayfasına bakmak istiyorsunuz. Müfettişte gördüğünüz, sayfanın referans aldığı JavaScript'i çalıştırdıktan sonra tarayıcının oluşturduğu şeydir. –

cevap

8

Sayfa için kaynak koduna bakarsanız, bazı javascript'in web sayfasını oluşturduğunu görürsünüz. Öğe tarayıcısında gördüğünüz, komut dosyası çalıştırıldıktan sonra web sayfasıdır ve beautifulsoup sadece html dosyasını alır. İşlenen web sayfasını ayrıştırmak için, web sayfasını sizin için oluşturmak üzere Selenium gibi bir şey kullanmanız gerekir.

from bs4 import BeautifulSoup 
import selenium.webdriver as webdriver 

url = 'http://instagram.com/umnpics/' 
driver = webdriver.Firefox() 
driver.get(url) 

soup = BeautifulSoup(driver.page_source) 

for x in soup.findAll('li', {'class':'photo'}): 
    print x 

Şimdi çorba ne bekliyoruz olmalıdır:

Yani, örneğin, bu kadar Selenyum ile nasıl görüneceğini olduğunu.