CoderCastrov logo
CoderCastrov
Питон

Насколько сложно зарабатывать деньги, парся веб-сайты с помощью Python?

Насколько сложно зарабатывать деньги, парся веб-сайты с помощью Python?
просмотров
2 мин чтение
#Питон
Table Of Content

    Ну, есть несколько способов заработать деньги, парся веб-сайты с помощью Python, включая анализ фондового рынка, анализ SEO, сравнение цен, агрегация контента, генерация лидов, анализ данных и выводы, а также продажа вашего кода.

    Может показаться, что это просто, но продвижение вашего бизнеса и решение технических проблем может быть сложным. Сегодня я хочу подчеркнуть одну из технических проблем.

    Несколько дней назад я хотел попробовать спарсить информацию о вакансиях с Indeed. Я наткнулся на этот пример кода на Python в интернете.

    import requests
    from bs4 import BeautifulSoup
    
    URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
    page = requests.get(URL)
    
    soup = BeautifulSoup(page.text, "html.parser")
    results = soup.find("div", attrs={"id": "searchCountPages"})
    print(results.text.strip())
    
    jobs = []
    for div in soup.find_all("div", class_="jobsearch-SerpJobCard"):
        title = div.find("h2", class_="title")
        company = div.find("span", class_="company")
        location = div.find("div", class_="recJobLoc")
        if None in (title, company, location):
            continue
        job = {"title": title.text.strip(),
               "company": company.text.strip(),
               "location": location["data-rc-loc"]}
        jobs.append(job)
    
    print(jobs)

    Этот код является скриптом парсинга веб-страницы с использованием библиотек requests и BeautifulSoup на Python. Он получает веб-страницу с indeed.com, извлекает список вакансий и сохраняет их в списке с названием jobs.

    Однако, когда я запустил этот код, я столкнулся с следующим сообщением об ошибке.

    Затем я переписал код следующим образом.

    import requests
    from bs4 import BeautifulSoup
    
    URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
    headers = {"User-Agent": "Mozilla/5.0"}
    
    try:
        response = requests.get(URL, headers=headers)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, "html.parser")
            results = soup.find("div", attrs={"id": "searchCountPages"})
            print(results.text.strip())
    
            jobs = []
            for div in soup.find_all("div", class_="jobsearch-SerpJobCard"):
                title = div.find("h2", class_="title")
                company = div.find("span", class_="company")
                location = div.find("div", class_="recJobLoc")
                if None in (title, company, location):
                    continue
                job = {
                    "title": title.text.strip(),
                    "company": company.text.strip(),
                    "location": location["data-rc-loc"]
                }
                jobs.append(job)
    
            print(jobs)
        else:
            print("Запрос завершился с кодом состояния:", response.status_code)
    
    except requests.RequestException as e:
        print("Произошла ошибка при получении страницы:", e)
    
    except Exception as e:
        print("Произошла ошибка при парсинге:", e)

    Выглядело хорошо, больше нет синтаксических ошибок. Но я получил "Запрос завершился с кодом состояния: 403".

    Какая досада!

    Затем я поискал в Google и узнал, что код состояния 403 указывает на то, что сервер понял запрос, но отказывается его выполнять из-за недостаточных разрешений или проблем с аутентификацией. Сервер, скорее всего, блокирует запрос из скрипта, так как он определяет его как бота или попытку автоматического парсинга.

    И есть несколько способов решить эту проблему, включая использование фейковых юзер-агентов, оптимизацию заголовков запроса или использование прокси.

    Я попытался использовать фейковые юзер-агенты и оптимизировать заголовки запроса, но ни один из этих подходов не сработал. Я узнал, что сервер пометил мой IP-адрес как используемый скрапером.

    Затем я попробовал несколько бесплатных сторонних библиотек и сервисов, предоставляющих функциональность ротации прокси в Python. Ни один из них не работал, потому что у бесплатных прокси есть следующие проблемы:

    В заключение, вам может потребоваться инвестировать в услуги, предлагающие функциональность ротации прокси. Тогда возникает вопрос: как достичь окупаемости платной услуги?

    Спасибо за чтение! Если у вас есть вопросы, пожалуйста, не стесняйтесь следовать и писать мне.