Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как запарсить страничку.

magic c Ученик (181), на голосовании 2 месяца назад
У меня есть код который открывает сайт и сохраняет html код странички в объекте. Я новичок в программирование и хочу спросить, как мне заполнить формы на этой страничке и так же сохранить их в кэш чтобы затем использовать. На других страничках для отправки заявлений. Заранее спасибо всем. Вот сам код:
# Создаем сессию с SeleniumBase
with SB(uc=True) as sb:
# Открываем страницу и ждем, пока она полностью загрузится
site = sb.driver.uc_open_with_reconnect(
"https://visa.vfsglobal.com/are/en/fra/login",
reconnect_time=12
)

# Получаем HTML-код страницы
page_source = sb.driver.page_source
Голосование за лучший ответ
Даниил Линник Знаток (443) 3 месяца назад
Заполнение форм на веб-странице и последующее сохранение данных для повторного использования можно выполнить с помощью библиотек Selenium и BeautifulSoup для обработки HTML-кода. Вот некоторые ключевые этапы для выполнения этой задачи:

1. **Заполнение форм**:
- Используйте Selenium для нахождения и заполнения полей формы на веб-странице.

2. **Сохранение данных в кэш**:
- Сохраните введенные данные в структуре данных, например, в словаре или JSON-файле, чтобы можно было использовать их позже.

Для иллюстрации, предположим, что у вас есть форма с полями `username`, `password`, и кнопка входа. Вот как это можно сделать:

python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import json

# Создаем сессию с SeleniumBase
from seleniumbase import SB

# Данные для заполнения формы
form_data = {
"username": "your_username",
"password": "your_password"
}

# Функция для сохранения данных в JSON
def save_data_to_cache(data, filepath='cache.json'):
with open(filepath, 'w') as file:
json.dump(data, file)

# Функция для загрузки данных из JSON
def load_data_from_cache(filepath='cache.json'):
with open(filepath, 'r') as file:
data = json.load(file)
return data

with SB(uc=True) as sb:
# Открываем страницу и ждем, пока она полностью загрузится
sb.open("https://visa.vfsglobal.com/are/en/fra/login")

# Заполняем форму
sb.type("[name='username']", form_data["username"]) # Используйте правильный селектор для поля username
sb.type("[name='password']", form_data["password"]) # Используйте правильный селектор для поля password

# Сохраняем данные в кэш
save_data_to_cache(form_data)

# Нажимаем кнопку входа (здесь используйте правильный селектор для кнопки)
sb.click("button[type='submit']")

# Пример использования данных из кэша
cache_data = load_data_from_cache()
print(cache_data)


### Пояснения:
1. **Selenium**:
- `sb.type(selector, text)` используется для введения текста в поля формы.
- `sb.click(selector)` используется для клика по элементам, например, по кнопке входа.

2. **Кэширование данных**:
- Данные сохраняются в JSON-файл через функцию `save_data_to_cache`.
- Затем данные можно загрузить из JSON-файла с помощью функции `load_data_from_cache` и использовать их повторно на других страницах.

### Дополнительные советы:
1. **Идентификаторы и селекторы**:
- Обратите внимание на правильные селекторы (например, `name`, `id`, `class`). Они могут отличаться в зависимости от структуры страницы.

2. **Обработчик ошибок**:
- Включите обработку ошибок для действий Selenium, чтобы скрипт мог корректно реагировать на непредвиденные ситуации.

Эти шаги и примеры помогут вам развить навыки работы с Selenium для автоматизации заполнения форм и кэширования данных.
magic cУченик (181) 3 месяца назад
seleniumbase.common.exceptions.NoSuchElementException: Message:
Element {[name='username']} was not present after 10 seconds!
Похожие вопросы