2017-05-10 3 views
2

Ich habe diesen HTML Code (Website ist www.kupindo.com):BeautifulSoup ohne Klasse zu finden

<div class="holder_content" style="margin-top:20px"> 
     <div class="holder_pagination"> 
      <a class="next_prev_link" href="/Knjige/Strucna-literatura/Biznis-i-organizacija/artikli/61_strana_2">« Prethodna</a> 
      <a href="/Knjige/Strucna-literatura/Biznis-i-organizacija/artikli/61">1</a> 
      <span style="float:left">...</span> 
      <a class="pagination_active_page">3</a> 
      <span style="float:left">...</span> 
      <a href="/Knjige/Strucna-literatura/Biznis-i-organizacija/artikli/61_strana_313">313</a> 
      <a class="next_prev_link" href="/Knjige/Strucna-literatura/Biznis-i-organizacija/artikli/61_strana_4">Sledeća »</a> 

      <form action="/Knjige/Strucna-literatura/Biznis-i-organizacija/artikli/61" name="formPagination" id="formPagination" method="post" style="width:170px"> 
       <label>Idi na stranu:</label> 
       <input name="iStr" id="iStr" class="textbox" type="text"> 
       <input name="butIdiNaStranu" id="butIdiNaStranu" value="Idi" type="submit"> 
      </form> 
     </div>  
</div> 

Und ich brauche letzte Seitennummer (313) zu extrahieren, um durch alle Seiten zu durchlaufen. Wie kann ich das tun, wenn ich keine Klasse habe? Ich war nur in der Lage Nummer für die erste Seite zu extrahieren, mit:

broj=corba.find_all("div",{"class":"holder_pagination"}) 

und dann mit:

broj.find("a").text 

und wenn ich len(broj) tun, erhalte ich 1 (weil es nur eine holder_pagination, ich weiß das).

Antwort

2

Sie sollten umgekehrt find und find_all verwenden. Es gibt eine einzige holder_pagination, so dass mit find:

broj = corba.find("div",{"class":"holder_pagination"}) 

Dann find_all verwenden, um alle Links zu finden:

links = broj.find_all("a") 

Jetzt haben Sie eine Liste von Links, so dass nur die zweite von den letzten auswählen und Sie haben es:

links[-2].text 
0
soup = BeautifulSoup(a,'lxml') 
# a is your code above ...<div class="holder_content" style="margin-top:20px">... 

broj = soup.find("div",{"class":"holder_pagination"}) 
find_next = broj.findAll('a',{'class':'next_prev_link'})[1] 
if find_next.text == 'Sledeća »': 
    print("Ima sledece stranica (There's a next page)") 
else: 
    print("Nema sledece stranica (There's no next page)") 

Jetzt statt Druck Ima ing sledeca strana, was wir tun können, ist, bekommen die href und etwas tun mit dieser Seite, Beispiel:

broj = soup.find("div",{"class":"holder_pagination"}) 
try: 
    find_next = broj.findAll('a',{'class':'next_prev_link'})[1] 
except Exception: 
    print("Doslo je do greske ili smo dosli do kraja, nismo mogli da pronadjemo SLEDECA - stranica") 
if find_next.text == 'Sledeća »': 
    print("Ima Sledeca strana(There's another page)") 
    pozovemo_neku_funkciju_to_do_something() 
    # I sad mozemo da otvorimo sledecu stranu najbolje da napravis funkciju za ovo 
    # I kad otvorimo sledecu stranicu i kad prikupis sve te podatke i ostalo opet na kraju proveravamo da li ima sledeca 
    # I sve dok ima sledeca nastavljamo sa radnjom 
else: 
    print("Nema sledece stranica (There's no next page)") 

ich die meisten der Code und die Kommentare in Serbisch geschrieben habe denn das ist der beste Weg für der Fragesteller zu verstehen, hoffentlich. Wenn jemand andere Unsicherheiten hat, hinterlassen Sie einen Kommentar.

Verwandte Themen