Вопрос или проблема
https://blue.kingcounty.com/Assessor/eRealProperty/default.aspx
Это веб-сайт, который я хочу собрать.
Например, я ввожу 500 4TH AVE
Я просто хочу получить номер участка и размер лота.
Я пытался изменить ссылку
https://blue.kingcounty.com/Assessor/eRealProperty/search=5004THAVE.aspx
Я думаю, что это не сработало, пожалуйста, продемонстрируйте. Спасибо.
Вы можете использовать Selenium для этого сбора данных. Когда вы впервые перейдете по этой ссылке, вам предложат принять условия, и вам нужно будет отметить чекбокс. После этого вас перенаправит на страницу, просто передайте ввод в ваш текущий URL и прочитайте HTML-элемент с помощью XPath или regex.
.
Ответ или решение
Способы скрапинга данных с веб-сайтов на Python: пример с использованием Selenium
Введение
Скрапинг веб-данных становится все более распространённым методом извлечения информации из интернет-ресурсов. В этой статье мы рассмотрим, как использовать Python для сбора данных с веб-сайта, который заканчивается на ".aspx", в частности, для извлечения номера участка и размера земельного участка с сайта оценки недвижимости округа Кинг.
Необходимые инструменты
Для успешного выполнения задачи нам понадобятся следующие библиотеки Python:
- Selenium: для автоматизации взаимодействия с веб-страницами.
- Beautiful Soup: для парсинга HTML-страниц (если необходимо).
- Pandas: для удобства работы с данными (опционально).
Перед началом убедитесь, что у вас установлены эти библиотеки. Их можно установить с помощью pip:
pip install selenium beautifulsoup4 pandas
Также нужно будет скачать драйвер для браузера, который вы собираетесь использовать (например, ChromeDriver для Google Chrome) и добавить его в PATH.
Шаг 1: Подготовка кода
Начнем с основ кода, чтобы инициализировать драйвер Selenium и открыть необходимую веб-страницу:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# Инициализация драйвера
driver = webdriver.Chrome() # Замените на 'webdriver.Firefox()' для Firefox
# Переход на целевую страницу
driver.get("https://blue.kingcounty.com/Assessor/eRealProperty/default.aspx")
# Ждем, пока страница загрузится и пользователь примет условия
time.sleep(5) # Подождите 5 секунд для выполнения действий пользователя
# Ожидание, пока пользователь примет условия
input("Нажмите Enter после того, как вы примете условия на странице...")
Шаг 2: Ввод данных и получение результатов
После того как пользователь примет условия, мы можем передавать адрес и извлекать необходимые данные:
# Находим поле ввода адреса и вводим адрес
search_box = driver.find_element(By.ID, "txtParcelNumber")
search_box.send_keys("500 4TH AVE") # Вводим адрес
search_box.send_keys(Keys.RETURN) # Нажимаем Enter
# Ждем, пока результаты загрузятся
time.sleep(5)
# Извлечение данных о номере участка и размере участка
parcel_number_element = driver.find_element(By.XPATH, "//td[contains(text(), 'Parcel Number')]/following-sibling::td")
lot_size_element = driver.find_element(By.XPATH, "//td[contains(text(), 'Lot Size')]/following-sibling::td")
parcel_number = parcel_number_element.text
lot_size = lot_size_element.text
print(f"Номер участка: {parcel_number}")
print(f"Размер участка: {lot_size}")
# Закрытие браузера
driver.quit()
Шаг 3: Обработка ошибок
Не забудьте добавить обработку исключений, чтобы ваш код не завершался ошибкой, если элементы не будут найдены:
try:
# Код для извлечения данных
except Exception as e:
print(f"Произошла ошибка: {e}")
Заключение
Используя Selenium, вы можете эффективно взаимодействовать с веб-сайтами, которые требуют пользовательского ввода или согласия на условия использования. Данный шаблон можно модифицировать под ваши конкретные требования для извлечения других данных. Однако стоит помнить, что скрапинг данных должен проводиться с соблюдением правил и условий использования сайта.
Важные замечания
- Убедитесь, что вы уважаете файлы
robots.txt
сайта и его условия использования. - Старайтесь не делать слишком частые запросы на один и тот же сайт, чтобы избежать блокировок.
Этот подход позволяет извлекать актуальные данные с помощью Python, что может эффективно использоваться в различных сферах, включая анализ данных и разработку приложений.