Учебники

Python Web Scraping — основанные на форме сайты

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

Вступление

В наши дни 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-адресу входа и выбрали форму. После этого имена и значения передаются непосредственно в объект браузера.