2017-08-16 1 views
0

J'essaye de gratter des données de "http://www.landwatch.com/Philippines_land_for_sale/Land"; ce dont j'ai besoin, c'est l'adresse et les prix. Ma méthodologie utilise le module de belle soupe en python. Je me suis coincé quand j'ai inspecté la page html, également avec le codage. Que certains d'entre vous me donnent un indice pour que je puisse passer à autre chose. Fondamentalement, l'inspection Web a indiqué que l'information nécessaire est de div class = propriété claire à gauche, et voici le code:Python: AttributeError et défis sur le Web scraping

from lxml import html 
import requests 
import bs4 as bs 
from urllib.request import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

my_url = 'http://www.landwatch.com/Philippines_land_for_sale/Land' 

#Openning up connection, grabbing the page 
uClient = uReq(my_url) 
page_html = uClient.read() 
soup = bs.BeautifulSoup(page_html,'lxml') 
g_data = soup.find_all("div",{"class": "clear property left"}) 
for item in g_data: 
    print(item).contents[0] 

grâce,

Répondre

1

Vous y êtes presque, l'info adresse et le prix est en l'élément <a> de <div class="propName"> sous <div class="clear property left">, vous pouvez trouver plus profondément à l'intérieur du g_data, comme ceci:

import requests 
from bs4 import BeautifulSoup 
my_url = 'http://www.landwatch.com/Philippines_land_for_sale/Land' 
link=requests.get(my_url) 
soup = BeautifulSoup(link.content, 'lxml') 
g_data =soup.find_all('div',class_='clear property left') 
for item in g_data: 
    address_price_info = item.find("div",{"class":"propName"}).find('a').text 
    print(address_price_info) 

sortie sera:

Cebu City, Philippines 1185000, PHP 
    Tagaytay, Philippines $116,000 
    Quezon City, Philippines $2,837,000 
    Sta Rosa Laguna, Philippines 15500, PHP 
    Makati, Philippines $5,947,826 
    Puerto Princesa City, Philippines $358,813 
    Carcar, Philippines 35000000, PHP 
    Lipa City, Philippines $57,750 
    Makati, Philippines 6400000, PHP 
    Taytay, Philippines $2,300,000 
    Taguig, Philippines $504,208 
    Taguig City, Philippines $13,760 
    Quezon City, Philippines 58000000, PHP 
    Cebu City, Philippines 7799030, PHP 
    Las Pinas, Philippines $468,000 

Mise à jour:

Si vous utilisez Chrome pour vérifier les informations d'adresse et le prix, il vous montrera l'emplacement:

<div class="clear property left"> 

    <div class="margintop"> 

     ...    
     <div class="propName"> #Here is the address and price info 
      <a href="/Cebu-City-Philippines-Land-for-sale/pid/119211639" onclick="WC('119211639', '-1');"> &nbsp; Cebu City, Philippines <BR/> 1185000, PHP</a> 
     </div> 


      <div>PAYMENT SCHEMES:\r\rReservation Fee : P20,000 (non refundable)\r\r1. SCHEME 1\rCash - 100% with the following discounts\r* 10% for 7 days payment\r* 8%...&nbsp;</div> 

     ... 

    </div> 
    <div class="clear"></div> 
</div> 
+0

Merci beaucoup Tiny.D !!! Une question plus rapide comment avez-vous trouvé l'information de prix et d'adresse est dans de propName ?? Je ne pouvais même pas voir ça. –

+0

@ M.C vérifier la mise à jour. –