В предыдущей главе мы видели скребущие динамические сайты. В этой главе давайте разберемся в очистке веб-сайтов, которые работают с пользовательскими данными, то есть с веб-сайтами на основе форм.
Вступление
В наши дни WWW (World Wide Web) движется к социальным сетям, а также к пользовательскому контенту. Таким образом, возникает вопрос, как мы можем получить доступ к такой информации, которая находится за пределами экрана входа в систему? Для этого нам нужно разобраться с формами и логинами.
В предыдущих главах мы работали с методом HTTP GET для запроса информации, но в этой главе мы будем работать с методом HTTP POST, который отправляет информацию на веб-сервер для хранения и анализа.
Взаимодействие с формами входа
Работая в Интернете, вы должны много раз взаимодействовать с формами входа. Они могут быть очень простыми, например включать очень мало полей HTML, кнопку отправки и страницу действий, или они могут быть сложными и иметь некоторые дополнительные поля, такие как электронная почта, оставить сообщение вместе с капчей по соображениям безопасности.
В этом разделе мы рассмотрим простую форму отправки с помощью библиотеки запросов Python.
Для начала нам нужно импортировать библиотеку запросов следующим образом:
import requests
Теперь нам нужно предоставить информацию для полей формы авторизации.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
В следующей строке кода нам нужно указать URL, по которому будет происходить действие формы.
r = requests.post(“enter the URL”, data = parameters) print(r.text)
После запуска скрипта он вернет содержимое страницы, на которой произошло действие.
Предположим, что если вы хотите отправить какое-либо изображение с помощью формы, это очень легко сделать с request.post (). Вы можете понять это с помощью следующего скрипта Python —
import requests file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)} r = requests.post(“enter the URL”, files = file) print(r.text)
Загрузка файлов cookie с веб-сервера
Файл cookie, иногда называемый веб-файлом или Интернет-файлом, представляет собой небольшой фрагмент данных, отправляемых с веб-сайта, и наш компьютер сохраняет его в файле, расположенном внутри нашего веб-браузера.
В контексте работы с формами входа куки могут быть двух типов. Один из них мы рассмотрели в предыдущем разделе, который позволяет нам отправлять информацию на веб-сайт, а второй — чтобы мы оставались в состоянии постоянного входа в систему на протяжении всего нашего посещения веб-сайта. Для форм второго типа веб-сайты используют файлы cookie, чтобы отслеживать, кто вошел в систему, а кто — нет.
Что делают куки?
В наши дни большинство сайтов используют файлы cookie для отслеживания. Мы можем понять работу куки с помощью следующих шагов —
Шаг 1 — Во-первых, сайт аутентифицирует наши учетные данные и сохраняет их в файле cookie нашего браузера. Этот файл cookie обычно содержит сгенерированный сервером ток, информацию о времени ожидания и отслеживании.
Шаг 2 — Далее веб-сайт будет использовать куки в качестве доказательства аутентификации. Эта аутентификация всегда отображается при каждом посещении сайта.
Файлы cookie очень проблематичны для веб-скребков, потому что, если веб-скребки не отслеживают файлы cookie, отправленная форма отправляется обратно, и на следующей странице кажется, что они никогда не входили в систему. Файлы cookie очень легко отследить с помощью Python запрашивает библиотеку, как показано ниже —
import requests parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’} r = requests.post(“enter the URL”, data = parameters)
В приведенной выше строке кода URL будет страницей, которая будет действовать как обработчик для формы входа в систему.
print(‘The cookie is:’) print(r.cookies.get_dict()) print(r.text)
После запуска вышеуказанного скрипта мы будем извлекать куки из результата последнего запроса.
Существует еще одна проблема, связанная с файлами cookie, которые иногда веб-сайты часто изменяют без предупреждения. С такой ситуацией можно справиться с запросами. Сессия () выглядит следующим образом:
import requests session = requests.Session() parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’} r = session.post(“enter the URL”, data = parameters)
В приведенной выше строке кода URL будет страницей, которая будет действовать как обработчик для формы входа в систему.
print(‘The cookie is:’) print(r.cookies.get_dict()) print(r.text)
Заметьте, что вы можете легко понять разницу между сценарием с сеансом и без сеанса.
Автоматизация форм с помощью Python
В этом разделе мы будем иметь дело с модулем Python под названием Mechanize, который сократит нашу работу и автоматизирует процесс заполнения форм.
Механизировать модуль
Модуль Mechanize предоставляет нам высокоуровневый интерфейс для взаимодействия с формами. Перед началом использования нам нужно установить его с помощью следующей команды —
pip install mechanize
Обратите внимание, что это будет работать только в Python 2.x.
пример
В этом примере мы собираемся автоматизировать процесс заполнения формы входа в систему, имеющей два поля, а именно адрес электронной почты и пароль.
import mechanize brwsr = mechanize.Browser() brwsr.open(Enter the URL of login) brwsr.select_form(nr = 0) brwsr['email'] = ‘Enter email’ brwsr['password'] = ‘Enter password’ response = brwsr.submit() brwsr.submit()
Приведенный выше код очень прост для понимания. Сначала мы импортировали модуль механизации. Затем был создан объект браузера Mechanize. Затем мы перешли к URL-адресу входа и выбрали форму. После этого имена и значения передаются непосредственно в объект браузера.