• Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    zlo1, сранно сранно ... раздал инет с телефона. через хром чистый без всяких расширений все равно сразу блок
  • Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    хм, блокираторов нет, парсер тоже не используется ... при чем через впн тоже сразу блокирует
  • Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    zlo1, у вас этот сайт тоже постоянно лежит ?
  • Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    Спасибо. Вероятно закинуть этот ресурс в библиотеку proxy_randomizer ?
    Написано
  • Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    Elvis, то Да ))
    Написано
  • Реально ли сейчас найти живые прокси?

    @AnKus Автор вопроса
    Elvis, чего это ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Jack444, спасибо попробую. RegisteredProviders это библиотека proxy_randomizer
    Написано
  • Как подкидывать рандомный прокси в цикл?

    @AnKus Автор вопроса
    Сорри за такую кривую подачу, думал все ясно будет. Я кусок выдрал который за прокссю отвечает а не весь код. Вот этот кусок отдельно. Я его исправил, что ошибок не дает. Но рандомно проксю тоже не дает, а должен :
    from requests import Session
    from proxy_randomizer import RegisteredProviders
    import random
    
    prox_list = []
    s = Session()
    rp = RegisteredProviders()
    rp.parse_providers()
    for x in range(20):
        prox = str(rp.get_random_proxy()).partition(' ')[0]
        for i in range(1): #тут, конечно смешно вышло, но иначе никак не получалось по 1 разу каждый прокси печатать
            proxy = str({'http': 'http://' + prox})  # Получаем список Прокси
            print(proxy)
           #ЭТО СКОПИРОВАНО ИЗ КОНСОЛИ
            # {'http': 'http://112.75.1.70:6666'}
            # {'http': 'http://103.152.232.122:3125'}
            # {'http': 'http://139.255.88.52:3128'}
            # {'http': 'http://194.67.91.153:80'}
            # {'http': 'http://112.75.1.71:6666'}
            # {'http': 'http://103.141.108.122:9812'}
            # {'http': 'http://112.75.1.98:6666'}
            # {'http': 'http://219.78.228.211:80'}
            # {'http': 'http://112.75.1.68:6666'}
            # {'http': 'http://47.251.12.73:57114'}
            # {'http': 'http://5.183.253.106:8085'}
            # {'http': 'http://103.152.112.145:80'}
            # {'http': 'http://185.129.199.209:29152'}
            # {'http': 'http://45.148.125.236:8085'}
            # {'http': 'http://112.75.1.101:6666'}
            # {'http': 'http://49.207.36.81:80'}
            # {'http': 'http://201.217.49.2:80'}
            # {'http': 'http://43.224.10.26:6666'}
            # {'http': 'http://194.5.207.151:3128'}
            # {'http': 'http://103.164.113.211:8080'}
            prox_list.append(proxy)
    
    
    def get_session(randomize):
        # создаем сессию для отправки HTTP запроса
        # выбираем случайным образом один из адресов
        proxies = random.choice(prox_list)
        s.proxies = proxies
        return s
    
    
    for i in range(5):
        r = get_session(prox_list)
        try:
            print('Request page with IP:', r.get('http://icanhazip.com', timeout=1.5).text.strip())
        except TimeoutError as e:
            continue


    в консоль выдает следующее:

    Request page with IP: 92.xxxxxxxx
    Request page with IP: 92.xxxxxxxx
    Request page with IP: 92.xxxxxxxx
    Request page with IP: 92.xxxxxxxx
    Request page with IP: 92.xxxxxxxx


    Это мой IP, это не хорошо. то есть, прокси лист меняется, а request page выдает мой ай-пи.
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Jack444, line.split ничего не дает. Кидаю запросы с рандомным прокси. Но никак не придумаю, как в цикле каждую итерацию чистить сессию. Куда cookies.clear() прописать ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    нет. капча не всегда дает ввести цифры. когда не дает, переходит на страницу, а страница получается с таким упл:
    https://www.newegg.com/p/2BH-004K-000J4?recaptcha=pass

    добавляется
    recaptcha=pass

    быть может как-то ее из урла можно отрезать ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    в обработке ошибки закомментил, чтоб увидить разницу, но разницы нет
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    там капча. Написал код с Selenium. Капчу ввожу руками.
    import csv
    from time import sleep
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    from tqdm import tqdm
    from requests import Session
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import TimeoutException
    
    s = Session()
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(executable_path=r'/home/anatolii/PycharmProjects/pythonProject/chromedriver', options=options)
    wait = WebDriverWait(driver, 10)
    
    with open('useful_links1.txt', 'r') as f:
        lines = [line.strip() for line in f.readlines()]
        models = []
        for line in lines:
            driver.get(line)
            sleep(30)
            name = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'product-title'))).__getattribute__('text')
            price_strong = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, '#app > div.page-content > div > div > div '
                                                                 '> '
                                                                 'div.row-side > div.product-buy-box > '
                                                                 'div.product-pane > div.product-price > ul '
                                                                 '> '
                                                                 'li.price-current > strong'))) \
                .__getattribute__('text')
            price_sup = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, '#app > div.page-content > div > div > div > '
                                                                 'div.row-side > div.product-buy-box > '
                                                                 'div.product-pane > div.product-price > ul > '
                                                                 'li.price-current > sup'))).__getattribute__(
                'text')
            price = price_strong + price_sup
            try:
                specific = wait.until(
                    EC.presence_of_element_located((By.CSS_SELECTOR, '#app > div.page-content > div > div > div '
                                                                     '> div.row-body > '
                                                                     'div.product-main.display-flex > '
                                                                     'div.product-wrap > div.product-bullets > '
                                                                     'ul'))).__getattribute__('text')
            # except NoSuchElementException as ex:
            #     pass
            except TimeoutException as ex:
                pass
            img = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'product-view-img-original')))
            src = img.get_attribute('src')
            try:
                p = s.get(src)
                try:
                    with open(f'/home/anatolii/PycharmProjects/pythonProject/selen_img/{name}.jpg', 'wb') as file:
                        file.write(p.content)
                except FileNotFoundError:
                    pass
                pass
            except AttributeError:
                pass
            photo_path = f'/home/anatolii/PycharmProjects/pythonProject/selen_img/{name}.jpg'
    
            model = {
                'name': name,
                'price': price,
                'specific': specific,
                'photo_path': photo_path,
            }
            models.append(model)
    
            with open('companys2.csv', 'w', newline='') as file:
                writer = csv.writer(file, delimiter=',', lineterminator='\r')
                writer.writerow(['Name', 'Price', 'Specific', 'Photo_path'])
                for model in tqdm(models):
                    writer.writerow(
                        [model['name'], model['price'], model['specific'], model['photo_path']])
    
    sleep(30)
    
    driver.quit()
    driver.close()


    на выходе получаю ошибку :
    NameError: name 'specific' is not defined

    Хотя, когда парсил не список ссылок, а просто одну ссылку, передавая ее просто в driver, все работало корректно. Что конкретно он имеет к этому значению ? не во всех товарах есть описание, но вроде как обработано. В чем проблема ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Сергей Горностаев, понятно. Наверное в данном случае, тоже вариант так себе, ибо на странице по 150 запросов одинаковых, но с разными ответами в json. Подскажите, как можно куки кидать рандомно, по аналогии с прокси ? Читал еще, что в таком случае надо очищать в сессии старые куки и прокси. Как в данном коде применить, чтоб после скольких-то итераций, скинуть старые и кинуть новые ? Или фигню сморозил ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Сергей Горностаев, таки там капча ... вероятно, она не постоянно висит, сутра ее не было, весь день парсер лежал, к вечеру опять пошел парсинг. Можно как-то без селена капчу обойти , или писать код под селен, с таймом проходить капчу вручную и парсить ? Есть какие советы ? "реверсинг этого кода делать" - это что ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Сергей Горностаев, Я подкинул проксю рандомно, юзер агент рандомно, куки роли не играют, а может и играют. С ними и без них ситуация одинакова. Возможно, есть способ кидать куки так же рандомно, как проксю ? И самое интересное в этом всем, что я вытащил 12 тыс ссылок на товар, и распарсил 600 с лишним. После этого парсер ВСЕ.
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Сергей Горностаев, тогда как я могу выяснить, на что обратить внимание при инспекции сайта ?
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Сергей Горностаев, Спасибо за совет. Я реально не додумался бы ... Спасибоще !
    Написано
  • Не могу понять откуда ошибка возникает?

    @AnKus Автор вопроса
    Выяснил почему. Перестал отдавать данные с сайта. Для парсинга этого сайта требуется подкидывать куки рандомно, что делается в коде. Но видимо, этого тоже мало ... Как решить задачу ?
    Написано
  • Как отфильтровать ссылки?

    @AnKus Автор вопроса
    Спасибо. На счет пхп-шников не угадали
    Написано
  • Результат POST запроса не записывается в файл. Как решить?

    @AnKus Автор вопроса
    Раз такая пьянка пошла, то может знаете какой метод использовать, чтоб фильтрануть ссылки в этом коде, чтоб добавлялись только с нужным значением в середине строки. В данном случае значение "fop". Вот код:
    from tqdm import tqdm
    from requests_html import HTMLSession
    
    session = HTMLSession()
    
    url = 'https://5140.org/fops?stan%5B0%5D=2'
    
    for i in range(1, 2):
        r = session.get(url, params={'page': i})
        for html in r.html:
            links = r.html.absolute_links
    
            all_links = []
    
            for link in tqdm(links):
                if link.ТУТ ДОЛЖЕН БЫТЬ МЕТОД('fop'):
                    all_links.append(link)
    
        with open('all_links.txt', 'a') as f:
            for kvd in all_links:
                f.write(f'{kvd}\n')
    Написано