@kopelev2000

Занимаюсь парсингом OLX, собираю номера телефонов со страниц, суть в том, что меня банит, как это можно исправить?

Занимаюсь парсингом OLX, собираю номера телефонов со страниц, суть в том, что меня банит, появляется данная надпись (вместо определённой страницы) 5df12dc91d449759575844.png, попробовал использовать uBlock, поначалу, работает нормально, телефоны собираются, всё отлично, но потом начинает блокировать тот скрипт, который открывает текст 5df12e96b3d93987907635.png, а затем появляется то, что вы видите на первой картинке.
Вопрос такой, может uBlock перестаёт понимать, что надо блокировать, можно ли задать ему (до открытия окна), что надо блокировать?
И нужно ли использовать прокси в связке с uBlock, пытался юзать без, но не помогало вообще (прокси IPv4)?
Код:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

f = open('text-for-OLX.txt', 'a', encoding='utf8')
urls = open("input.txt", "r")
for url in urls:

    def get_url(driver):
        driver.get(url)
        print("GOT URL")
        time.sleep(3)


    def press_cookie_btn(driver):
        cookie_btn = driver.find_element_by_xpath("//div[@class='topinfo rel']"
                                                  "/button[@class='cookie-close abs cookiesBarClose']")
        cookie_btn.click()
        print("COOKIE")
        time.sleep(2)


    def get_content(driver):
        try:
            time.sleep(1)
            driver.find_element_by_xpath("//span[@class='link spoiler small nowrap']/span").click()
            time.sleep(2)
            try:
                phone = driver.find_element_by_xpath("//strong[@class='fnormal xx-large']").text
                print(phone)
                f.write(phone + '\n')
                time.sleep(1)
            except:
                phone_1 = driver.find_element_by_xpath("//strong[@class='fnormal xx-large']/span[@class='block'][1]").text
                phone_2 = driver.find_element_by_xpath("//strong[@class='fnormal xx-large']/span[@class='block'][2]").text
                print(phone_1, phone_2)
                f.write(phone_1 + ' ' + phone_2 + '\n')
                time.sleep(1)
        except:
            pass



    def page_pagination(driver):
        ars = driver.find_elements_by_xpath("//a[@class='marginright5 link linkWithHash detailsLink']")
        urls_1 = []
        for ar in ars:
            url_1 = ar.get_attribute("href")
            urls_1.append(url_1)
        for url_2 in urls_1:
            driver.get(url_2)
            time.sleep(3)
            get_content(driver)
            time.sleep(3)

    def pages_pagination(driver, last_elem):
        page_pagination(driver)
        for i in range(2, int(last_elem)+1):
            driver.get(url+"/?page="+str(i))
            page_pagination(driver)




    def main():
        options = Options()
        options.add_argument('user-agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7')
        options.add_extension("D:\\UB\\cjpalhdlnbpafiamejdnhcphjbkeiagm.crx")
        driver = webdriver.Chrome(options=options)
        driver.implicitly_wait(10)
        get_url(driver)
        try:
            last_elem = driver.find_element_by_xpath("//span[@class='item fleft'][last()]")
        except:
            pass
        press_cookie_btn(driver)
        try:
            pages_pagination(driver, last_elem)
        except:
            page_pagination(driver)
        driver.quit()


    main()

urls.close()
f.close()
  • Вопрос задан
  • 316 просмотров
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Занимаюсь парсингом OLX, собираю номера телефонов со страниц, суть в том, что меня банит, как это можно исправить?
Перестать парсить без понимания процесса.
Ответ написан
dimonchik2013
@dimonchik2013
если всем давать - сломается кровать
прокси в Селениуме, скажем так, не очень оригинальное решение
хуже только прокси в селениуме под своим аккаунтом ))

но с Гуглом работает )), конечно, не в лоб
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы