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)
После запуска скрипта он вернет содержимое страницы, на которой произошло действие.
Предположим, что если вы хотите отправить любое изображение с формой, это очень просто с помощью requests.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, представляет собой небольшой фрагмент данных, отправляемый с веб-сайта, и наш компьютер сохраняет его в файле, расположенном внутри нашего веб-браузера.
В контексте работы с формами входа файлы cookie могут быть двух типов. Первый, который мы рассмотрели в предыдущем разделе, позволяет нам отправлять информацию на веб-сайт, а второй позволяет нам оставаться в состоянии постоянного входа в систему на протяжении всего нашего посещения веб-сайта. Для форм второго типа веб-сайты используют файлы cookie, чтобы отслеживать, кто вошел в систему, а кто нет.
Что делают куки?
В наши дни большинство веб-сайтов используют файлы cookie для отслеживания. Мы можем понять работу файлов cookie с помощью следующих шагов -
Step 1- Во-первых, сайт проверит наши учетные данные и сохранит их в файле cookie нашего браузера. Этот файл cookie обычно содержит генерируемый сервером токен, время ожидания и информацию для отслеживания.
Step 2- Далее веб-сайт будет использовать файл cookie в качестве доказательства аутентификации. Эта аутентификация всегда отображается всякий раз, когда мы посещаем веб-сайт.
Файлы cookie очень проблематичны для веб-парсеров, потому что, если веб-парсеры не отслеживают файлы cookie, отправленная форма отправляется обратно, и на следующей странице кажется, что они никогда не входили в систему. Очень легко отслеживать файлы cookie с помощью Python requests библиотека, как показано ниже -
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 из результата последнего запроса.
Есть еще одна проблема с файлами cookie: иногда веб-сайты часто изменяют файлы cookie без предупреждения. С такой ситуацией можно справитьсяrequests.Session() следующим образом -
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-адресу входа и выбрали форму. После этого имена и значения передаются непосредственно объекту браузера.