Skip to content

Instantly share code, notes, and snippets.

@Zulcom
Created September 11, 2017 13:28
Show Gist options
  • Save Zulcom/e08f53933428adb3c5196bbe687a3793 to your computer and use it in GitHub Desktop.
Save Zulcom/e08f53933428adb3c5196bbe687a3793 to your computer and use it in GitHub Desktop.
Парсинг шильдиков акции эльдорадо
import urllib
from bs4 import BeautifulSoup
from pushbullet import Pushbullet
import os
from selenium import webdriver
urls = ["www.eldorado.ru/special/550985894/?filter_category[1624320]=On",
"www.eldorado.ru/special/550985894/page/2/?filter_category[1624320]=On",
"www.eldorado.ru/special/550985894/page/3/?filter_category[1624320]=On"] # ССылки, по которым будем искать шильдики
pb = Pushbullet("Replace with you PushBullet API KEY") # Уведомления будем посылать чреез pushbullet.com
for url in urls:
while True:
try:
req = urllib.request.urlopen("https://"+url) #Берём HTML с заданых страниц...
except:
continue
break
soup = BeautifulSoup(req, "html.parser") # кормим его супу
for link in soup.find_all('img'): #ищем картинки
if link.get('src') == "/upload/shield/superbrands-50-l.jpg": #если найденная картинка является искомым шильдиком
a = link.parent.parent.parent.parent.parent.parent.find("div", {"class": "itemTitle"}).findChildren()[0] # перепрыгиваем в Div описания товара и берём оттуда заголовок со ссылкой
browser = webdriver.Chrome("./chromedriver.exe") # Инициализируем браузер
req = browser.get("https://www.eldorado.ru/404") # кормим ему заведомо пустую страницу
browser.add_cookie({'name': 'iRegionSectionId', 'value': '15624', 'domain': "www.eldorado.ru"}) #вбиваем в куки информацию о городе, в котором нужно проверить наличие ("value")
browser.get("https://www.eldorado.ru" + a.get('href')+"/?TID=71153264") # кормим ему страницу найденного товара
browser.refresh() # после загрузки страницы перезагружаем её, чтобы эльдорадо съел куки правильно
CurSoup = BeautifulSoup(browser.page_source, "html.parser") # опять супим эту страницу, но на этот раз на ней уже выполнился JS
if CurSoup.find("div", {"class": "buyBox"}) is not None: #если не нашли "Товара нет в наличии"
pb.push_link(a.findAll(text=True)[0], "https://www.eldorado.ru"+a.get('href')) # кидаем уведомление с инфой о товаре
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment