#python #web-scraping #indexing
#python #очистка веб-страниц #индексирование
Вопрос:
while (x < go):
url = "https://www.shoppingwesbite.com/search?=product" input_a
headers = {'User-Agent': 'my user agent here'}
ok = get(url, headers=headers)
data = BeautifulSoup(ok.content, 'html.parser')
price = data.find_all('div', {"class" : "css-rey619"})[x].get_text()
title = data.find_all('div', {"class" : "css-398hol"})[x].get_text()
reviews = data.find_all('span', {'class':'css-402phy'})[x].get_text()
Я включил этот фрагмент кода из своего веб-скребка, и он, по сути, просто извлекает первые 10 результатов на сайте покупок для продукта, введенного пользователем. Теперь большую часть времени это работает, но иногда возвращает ошибку, в которой говорится, что индекс не вызывается для переменной «reviews», потому что я думаю, что он пытается получить отзыв для продукта, у которого еще нет отзыва. Я не знаю, как обойти это, и был бы признателен за любые предложения / идеи о том, что я мог бы попробовать. Я думал о создании некоторого логического оператора, который проверяет, есть ли в списке обзор или нет, и выводит его, если он есть, но я не знаю, как этого добиться. Спасибо!
Комментарии:
1. вы можете добавить код, чтобы проверить, нет ли проверки, игнорируйте это перед запуском цикла
2. Как бы мне этого добиться? Какой тип оператора я бы использовал? Есть ли какой-либо встроенный метод в python для этого?
3. можете ли вы опубликовать здесь какой-нибудь минимально воспроизводимый код?
4. Будет ли работать встроенная функция callable()?
Ответ №1:
Вы можете проверить длину обзоров, если она равна нулю, вы получили пустой обзор.
for i in range(len(reviews)):
if len(reviews[i]) == 0:
print("you got empty review now you can easily remove it")