2017-12-23 1 views
0

Ich bin neu in Python-Programmierung, versuchen, Web-Scraping nur zum Lernen mit BeautifulSoup, einen Iterator mit FOR-Schleife anwenden, aber ich denke, es läuft nur für die eine Zeit, und das nächste Mal zeigt es mir einen Fehler, versuchte viel, konnte aber nicht auflösen.Web Scraping mit BeautifulSoup (Fehler in For-Schleife)

Unten ist mein Code -

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

url = 'https://www.packtpub.com/all' 

page = urlopen(url) 
soup_packtpage = BeautifulSoup(page,'lxml') 
page.close() 

all_book = soup_packtpage.find_all("div",class_='book-block-outer') 

for book_title in all_book: 
    title = book_title.div['data-product-title'] 
    price = book_title.div['data-product-price'] 
    category = book_title.div['data-product-category'] 
    print(title) 
    print("Rs:-"+ price) 
    print(category) 

und unten ist die Ausgabe -

Lernen Algorithmen und Datenstrukturen in Java für Day-to-Day-Anwendungen [Video] Rs: -199,44 Anwendung Entwicklung

Traceback (most recent call last): File "/home/bhagwatanimesh/PycharmProjects/packet_pub/packet_pub", line 17, in title = book_title.div['data-product-title'] File "/home/bhagwatanimesh/.local/lib/python3.5/site-packages/bs4/element.py", line 1011, in getitem return self.attrs[key] KeyError: 'data-product-title'

Antwort

0

Es scheint, als ob Sie versuchen, auf einen Schlüssel zuzugreifen, der nicht im Wörterbuch vorhanden ist. Um dies zu beheben, können Sie den folgenden Code verwenden.

for book_title in all_book: 
    try: 
     title = book_title.div['data-product-title'] 
     price = book_title.div['data-product-price'] 
     category = book_title.div['data-product-category'] 
     print(title) 
     print("Rs:-"+ price) 
     print(category) 
    except: 
     continue 
+0

Vielen Dank, ich war es aus einer langen Zeit versucht, und ich war nicht in der Lage, es zu lösen, jetzt ist es viel feiner :) Dank arbeiten :) –