Веб-сканер падает после сбора 2 страниц данных - PullRequest
0 голосов
/ 03 мая 2020

Я перебираю веб-сайт, на который занесено iPhone дел.

Веб-скребок должен собрать название продукта и цену. Когда я запускаю программу, мой код вылетает, и я получаю эту ошибку:

Traceback (most recent call last):
  File "phonecases.py", line 12, in <module>
    price = content.find(class_="products-grid-price").get_text().replace('\n','')
AttributeError: 'NoneType' object has no attribute 'get_text'

Это потому, что некоторые товары продаются, когда товар не продается, класс равен products-grid-price и когда товар продается, класс равен products-grid-price-sale. Поэтому программа собирает нужные мне данные до тех пор, пока не достигнет предмета в продаже, а затем происходит сбой.

Как исправить мою программу, чтобы она либо пропускала товар в продаже, либо собирала его как другую точку данных?

Это мой код:

import requests
from bs4 import BeautifulSoup

url = 'https://www.cellphonecases.com/Apple-Iphone-11-C2429.html?page='
    for page in range(1, 5):
        response = requests.get(url + str(page))
        soup = BeautifulSoup(response.text, 'html.parser')
        contents = soup.find_all(class_="products-grid-container-out")

    for content in contents:
        title = content.find(class_="products-gridname").get_text().replace('\n','')
        price = content.find(class_="products-grid-price").get_text().replace('\n','')
        print(title, price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...