#python #web-scraping #beautifulsoup
Вопрос:
Я пытаюсь заставить BeautifulSoup проверить эти веб-страницы, я добавил еще один товар, который есть в наличии в конце, чтобы смоделировать, когда они появятся на складе. Когда дело доходит до этого, возникает проблема и возникает ошибка. Я хочу, чтобы он либо 1) нашел что-то еще на этой странице и не выдал ошибку, либо 2) если он выдаст ошибку, я буду знать, что «Распродано» нет, а затем, если это так, я хочу, чтобы он отправил мне по электронной почте что-то простое, например, проверьте этот URL-адрес для элемента instock
import smtplib from bs4 import BeautifulSoup import requests import smtplib url = [url1,url2,url3,url4] data = [] for pg in url: page = requests.get(pg) soup = BeautifulSoup(page.content, "html.parser") soldout = soup.find_all(text="Sold Out") parent = soldout[0].parent cart = soup.find_all(text="Add to cart") print(parent.string) else: gmail_user = 'email' gmail_password = 'password' sent_from = gmail_user to = ['my email'] subject = 'Item is in stock' body = 'link to in stock item' email_text = """ From: %s To: %s Subject: %s %s """ % (sent_from, ", ".join(to), subject, body) try: smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465) smtp_server.ehlo() smtp_server.login(gmail_user, gmail_password) smtp_server.sendmail(sent_from, to, email_text) smtp_server.close() print("Email sent successfully!") except Exception as ex: print("Something went wrong….", ex)
Вот программа, запущенная с ошибкой:
Sold Out Sold Out Sold Out Sold Out Sold Out Sold Out Traceback (most recent call last): File "***", line 19, in lt;modulegt; parent = soldout[0].parent IndexError: list index out of range Process finished with exit code 1
Комментарии:
1. У него возникает проблема, когда дело доходит до этого, и возникает ошибка , Должны ли мы догадываться, в чем заключается ошибка? Обновите вопрос, чтобы включить сообщение об обратном отслеживании ошибок.
Ответ №1:
Вам необходимо предоставить больше кода и обновить свой вопрос сообщением об обратном отслеживании и конкретными ошибками, с которыми вы столкнулись. Возможно, также добавьте веб-сайт, который вы пытаетесь очистить.
Однако проверка инвентаря на веб-сайте-довольно простой процесс. Учесть следующее:
- Добавьте товар в корзину (обычно это делается с помощью запроса на отправку, проверьте на вкладке «Сеть» браузера)
- Проверьте, был ли товар успешно добавлен в корзину (оцените ответ на предыдущий запрос, если товар недоступен, должны появиться сообщения об ошибках)
Теоретически вы могли бы добавить тысячи товаров в корзину и проверить, позволяет ли это веб-сайт. Если вы столкнулись с ошибкой, уменьшите количество товара до тех пор, пока он не будет добавлен. Таким образом, вы можете узнать общее количество товаров на складе, вместо того, чтобы просто знать, что есть один товар в наличии.
Комментарии:
1. Я обновил код, чтобы включить ошибку. Проблема у меня в том, что товары очень редко бывают на складе, поэтому я не могу добавить их в корзину и у меня возникают проблемы с их проверкой, чтобы понять, в чем разница, только то, что «Распродано» уходит,
2. Извините, позвольте мне добавить, что у меня возникли проблемы, когда товар не появлялся, когда его не было в наличии в поле поиска. Но то, что я сделал, это нашел URL-адрес каждого товара, которого нет на складе, и это то, что я ищу «Распродано»