Сегодня кажется, что любые данные, которые вы ищете, существуют в Интернете. В любой момент в World Wide Web есть более миллиарда веб-сайтов, содержащих достаточно информации, чтобы собрать 305 миллиардов печатных листов бумаги. Хорошей новостью является то, что независимо от того, какие данные вы ищете, вы можете быть уверены, что найдете их в Интернете. Плохая новость заключается в том, что в Интернете так много данных, что личное просеивание через него граничит с физически невозможным. Добавьте к тому факту, что большинство веб-сайтов имеют разные области, форматы и рамки. Например, около 30% веб-сайтов используют WordPress, а остальные используют множество других платформ, таких как Joomla, Drupal, Magento и т. д. Введите веб-сканирование. Веб-сканеры – это автоматизированные инструменты сбора данных, которые взаимодействуют с веб-сайтами от имени своих владельцев. Это позволяет получить доступ к данным, готовым к выходу, в локальную базу данных или электронную таблицу для дальнейшего анализа.Хотя это может показаться сложным, правда в том, что создание веб-искателя с использованием Selenium – довольно простой процесс. Давайте погрузимся и узнаем, что вам нужно для начала.
Одним из первых препятствий, с которыми вы столкнетесь при изучении создания веб-искателя с использованием Selenium, является тот факт, что веб-сайтам, похоже, это не нравится. Веб-сканеры генерируют много трафика, и администраторы веб-сайтов склонны чувствовать, что веб-сканеры злоупотребляют ресурсами сервера, которые они предоставляют общественности.
Но крупные интернет-компании, такие как Google, сканируют данные все время. Единственное различие заключается в том, что они спрашивают разрешения и предлагают что-то взамен (в случае Google, размещение в поисковой системе номер один в мире). Что вы делаете, если вам нужен доступ к данным и у вас нет удобной поддержки мощного экономического стимула на вашей стороне?
Вместо того, чтобы запрашивать разрешение, вы можете использовать Selenium для сбора данных с веб-сайтов через браузер – точно так же, как обычный пользователь. Но поскольку веб-администраторам это не нравится, вам понадобится прокси, чтобы скрыть вашу личность, чтобы они не могли отследить вашу деятельность.
В зависимости от вашей юрисдикции веб-сайта, к которому вы хотите получить доступ, использование прокси-сервера, может стать спасением. В 2011 году суд в Британской Колумбии наказал компанию за копирование контента с сайта недвижимости.
Два способа сканирования веб-данных:
Мы сосредоточимся на втором. Журналисты, аналитики данных и программисты обычно не имеют ресурсов, которые Google приносит в таблицу, когда он запрашивает доступ к веб-искателю.
Мы сосредоточимся на втором. Журналисты, аналитики данных и программисты обычно не имеют ресурсов, которые Google приносит в таблицу, когда он запрашивает доступ к веб-искателю.
Существует множество инструментов и платформ, которые вы можете использовать для очистки веб-данных, но большинство из них имеет ограничения. Например, если вы используете модуль Python Scrapy, вы можете получить доступ только к веб-сайтам, на которых нет пользовательских интерфейсов с поддержкой Java-Script.
Selenium – простой инструмент для автоматизации браузеров. С помощью Selenium вы можете автоматизировать веб-браузер, например Google Chrome или Safari, чтобы любой сайт был совместим с обходом.
Первым шагом является загрузка и настройка Selenium. Вам нужно будет загрузить версию Selenium, специально разработанную для вашего браузера. Например, для Google Chrome это называется ChromeDriver.
Когда вы извлекаете файл (например, ChromeDriver.exe), обязательно помните, куда его поместили, потому что он понадобится вам позже.
Чтобы использовать Selenium для создания веб-сканера, вам понадобятся дополнительные модули Java. Это требует немного кодирования, но это не так сложно. Во-первых, установите Maven, который вы собираетесь использовать для создания Java-программы.
Как только Maven будет готов, вы должны добавить эту зависимость в POM.xml:
Теперь просто запустите процесс сборки, и вы готовы сделать первые шаги с Selenium.
Начнем с чего-то простого. Сначала создайте экземпляр ChromeDriver:
WebDriver driver = new ChromeDriver();
Теперь откроется окно Google Chrome. Чтобы перейти на страницу поиска Google, используйте следующую команду:
driver.get("http://www.google.com");
Чтобы выполнить поиск, вам нужно получить ссылку, указывающую на поле ввода текста на странице. Поле ввода текста называется q. Чтобы найти элементы HTML на странице, используйте WebDriver.findElement(). Ваша команда должна выглядеть так:
WebElement element = driver.findElement(By.name("q"));
Теперь вы можете ввести текст в элемент q, используя команду sendKeys(). Если вы отправляете текст в элемент и завершаете команду с помощью новой строки, команда будет выполняться немедленно. Давайте искать предмет этой статьи:
element.sendKeys(«Построение веб-сканера с использованием Selenium \n»);
Теперь поиск выполняется, но Selenium не знает, как долго ждать появления страницы результатов. Скажем, подождите 10 секунд, а затем вернитесь, когда заголовок страницы начинается с фразы:
new WebDriverWait(driver, 10) .until(d -> d.getTitle().toLowerCase().startsWith("Building a web crawler using Selenium"));
Теперь Selenium будет ждать 10 секунд, а затем вернется, когда заголовок страницы начнется с фразы «Создание веб-сканера с использованием Selenium». Теперь давайте получим название страницы:
System.out.println("Title:" + driver.getTitle());
Так работает Selenium. Он присваивает браузеру матрицу кодирования, чтобы вы могли автоматизировать то, что обычно делали бы вручную. Это простой и мощный способ выполнить широкий круг задач, требующих больших затрат времени. Чтобы закрыть сеанс, используйте следующую команду:
driver.quit();
Вот и все. Вы успешно контролировали сеанс браузера, используя Java в Selenium.
При использовании Selenium для очистки веб-сайтов главное, что вы хотите защитить от него, – это черный список. Поскольку веб-администраторы обычно автоматически обрабатывают веб-искатель Selenium в качестве угроз, вам необходимо защитить свой веб-искатель.
Никто не может гарантировать, что ваш веб-сканер никогда не попадет в черный список, но выбор правильного прокси-сервера может иметь большое значение и улучшить ожидаемую продолжительность жизни вашего искателя.
Большинство веб-сайтов будут блокировать поисковые роботы на основе IP-адреса исходного сервера или хостинг-провайдера. Умные веб-администраторы будут использовать интеллектуальные инструменты для определения шаблона определенного пула IP-адресов, а затем блокировать весь пучок.
Вам нужен прокси-сервер, который может переключаться между несколькими IP-адресами. Не соглашайтесь на простое решение:
Важно то, что Selenium по своей природе сильно настраивается. Ваши навыки воображения и кодирования – это единственный предел вашей способности создавать веб-искатель с использованием Selenium.
Например, если вы используете библиотеку Requests, вы можете написать код для использования прокси-IP-адресов с Selenium следующим образом:
r = requests.get('example.com',headers=headers,proxies={'https': proxy_url}) proxy = get_random_proxy().replace('\n', '') service_args = [ '--proxy={0}'.format(proxy), '--proxy-type=http', '--proxy-auth=user:password' ] print('Processing..' + url) driver = webdriver.PhantomJS(service_args=service_args)
Где example.com – это веб-сайт, к которому вы хотите получить доступ, и get_random_proxy – это команда для получения случайного прокси из вашего пула.
Но это только начало интеграции прокси с вашим веб-браузером Selenium. Существует гораздо больше возможностей:
Благодаря мощному инструменту Selenium, поддерживаемому прокси-серверами верхней полки, на которые вы можете положиться, вы сможете беспрепятственно собирать данные из любого места в Интернете, не подвергая уязвимости. Наслаждайтесь и радуйтесь!