парсинг с помощью BeautifulSoup python - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь выбросить товары интернет-магазина с помощью BeautifulSoup, но у меня проблема. Есть только один товар, который я могу выбросить! , но я хочу отказаться от всех продуктов.

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
first_watch = result[0]
first_name = first_watch.a.text
first_rate = first_watch.find(class_='c-product-box__rate-comparision--rate-people')
first_price = first_watch.find(class_='c-price__value-wrapper')
first_rate = first_rate.text
first_price = first_price.text

Как только я использую first_watch = result и использую find_all, показывая эту ошибку:

Traceback (последний вызов последний ): Файл "C: / Users / Oogway / PycharmProjects / web_scraping1 / web_s.py", строка 8, в файле first_name = first_watch.a.text "C: \ Users \ Oogway.virtualenvs \ web_scraping1 \ lib \ site-packages \ bs4 \ element.py ", строка 2160, in__getattr__ raise AttributeError (AttributeError: объект ResultSet не имеет атрибута 'a'. Вы, вероятно, обрабатываете список элементов как один элемент. Вы вызывали find_all (), когда вы хотели вызвать find ()?

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
first_watch = result
first_name = first_watch.a.text
first_rate = first_watch.find_all(class_='c-product-box__rate-comparision--rate-people')
first_price = first_watch.find_all(class_='c-price__value-wrapper')
first_rate = first_rate.text
first_price = first_price.text

1 Ответ

0 голосов
/ 27 мая 2020

Вам необходимо выполнить итерацию объекта result.

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
for itm in result:
    print(itm.a.text)

find_all метод вернет все div с классом c-product-box__content.

...