Unable to Debug

David Froger david.froger.ml at mailoo.org
Mon Jan 2 04:43:44 EST 2017


Hello Aritra,

Your standard output and standard error are mixed (I don't know why), so error
message is not immediate to read. It is:

> Traceback (most recent call last):
>   File "C:/Users/Aritra Bhattacharjee/PycharmProjects/PythonWebModules/Web Scraper.py", line 17, in <module>
>     print(product_name[i])
> KeyError: 20

There no such `20` title in `product_name`, so we can deduce that
`soup.find_all` found only 19 titles.

You can to instead:

    product_name = []  # a list instead of a dict is enought

    for title in soup.find_all('p', class_="product-title"):
        product_name.append(title.string)

    # or this should work too:
    # product_name = list(soup.find_all('p', class_="product-title"))

    for title in product_name:  # no need of i variable
        print(title)

Quoting Aritra Bhattacharjee (2017-01-02 10:04:59)
> I am new to python programming. I wrote a code to search for the product names on a page of snapdeal.com .
> 
> Code:
> import urllib.request
> from bs4 import BeautifulSoup as BS
> 
> url = 'https://www.snapdeal.com/products/electronics-headphones?sort=plrty'
> 
> response = urllib.request.urlopen(url).read()
> soup = BS(response, 'html.parser')
> 
> #for dataprice in soup.find_all('span', class_="lfloat product-price"):
> #    print(dataprice)
> product_name={}
> i=0
> for title in soup.find_all('p', class_="product-title"):
>         product_name[i]=title.string
>         i += 1
> for i in range(1,21):
>     print(product_name[i])
> 
> 
> Output:
> Motorola Pulse 2 Over Ear Wired Headphones With Mic (Black)
> Bose SoundLink On-Ear Bluetooth Headphones - Black & Blue
> Sony MDR-ZX110A Headphones Without Mic (White)
> Philips SBCHL140/98 Over Ear Headphone Without Mic
> Intex Desire BT Over Ear Wired With Mic Headphone Black
> JBL T450 On Ear Wired Headphones With Mic Black
> Motorola Pulse Max Over Ear Wired Headphones With Mic (Black)
> Philips SHB7250WT/00 Over Ear Wireless Headphones With Mic White
> Sony MDR-XB650BT On-Ear Extra Bass(XB) Headphones with Bluetooth & NFC (Black)
> Intex JAZZ Over Ear Wired With Mic Headphone Black
> Skullcandy S5GBW-J539 On Ear Wireless Headphones With Mic Black
> JBL C300SI Over Ear Wired Without Mic Headphone Black
> Zoook Rocker iFit Bluetooth Wireless Headphones With Mic Black
> Signature VM-46 Over Ear Wired Headphone Without Mic White
> Sony MDR-G45 Over Ear Wired Without Mic Headphone- Black
> Motorola Pulse Max Over Ear Wired Headphones With Mic (White)
> Bose SoundTrue Around-Ear Headphones with Mic (Navy Blue) for Samsung and Android Devices
> JBL T450 On Ear Wired Headphones With Mic Blue
> Motorola Pulse 2 Over Ear Wired Headphones With Mic (White)
> 
> 
> The Output shows some error that I could not understand why...Thanks in Advance
> -- 
> https://mail.python.org/mailman/listinfo/python-list


More information about the Python-list mailing list