WebScrapping

Piet van Oostrum piet-l at vanoostrum.org
Tue Feb 19 07:38:01 EST 2019


Adrian Ordona <adrian.ordona at gmail.com> writes:

> Hi,
>
> I’m learning how to code and interested in web scrapping to gather data.
> I’m running on Mac OS X 10.9.5 and python 3.7 terminal.
> I’m trying to capture the name of the brand and price but i keep getting an error (see below).
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/anaconda3/lib/python3.7/site-packages/bs4/element.py", line 1884, in __getattr__
>     "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
> AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
>
>
> Here’s what i got and thanks for the help
>
> import bs4
> from urllib.request import urlopen as uReq
> from bs4 import BeautifulSoup as soup
>
> my_url = 'https://www.newegg.com/Desktop-Graphics-Cards/SubCategory/ID-48?Tid=7709'
>
> uClient = uReq(my_url)
> page_html = uClient.read()
> uClient.close()
> page_soup = soup(page_html, "html.parser")
> records = []
>
> containers = page_soup.findAll("div",{"class":"item-container"})
>
> for container in containers:
> 	brand = container.find('div', attrs={'class':'item-branding'})
> 	price = container.find('div', attrs={'class':'item-action'})
> 	records.append((brand, price))
>
When I put this in a python file, and run it under python3.7, it works.
It seems you were running this line by line interactively, tight?

Could it be that you accidentally entered
brand = containers.find('div', attrs={'class':'item-branding'})
i.e containers rather than container, because that would generate the error that you copied.
-- 
Piet van Oostrum <piet-l at vanoostrum.org>
WWW: http://piet.vanoostrum.org/
PGP key: [8DAE142BE17999C4]


More information about the Python-list mailing list