Рубрики
Без рубрики

Новичок: сеть в основном в Pure Python

Легкий сеть в Python для начинающих с регулярными выражениями. Tagged с помощью Python, Webscraping, запросов, RegularexPressions.

Я люблю массовую очистку, особенно в начале обучения, как кодировать. Это довольно просто, вы можете многое узнать о том, как обрабатывать данные, и вы получите немедленные результаты!

Но Я вижу много учебных пособий, которые становятся чрезмерно сложными и фокусируются в основном на рамках, называемом красивым супом. Это фантастическая и могущественная рамка, но большую часть времени – и особенно для новичка – Это полностью сверху. Давайте будем честными, мы не хотим индексировать полный веб -сайт, в большинстве случаев мы просто хотим загружать изображения или просить несколько значений.

Это можно сделать намного проще с одним волшебным словом, Регулярные выражения Анкет

Хорошо, хорошо, я слышу тебя “что? Регулярные выражения и легко? Wtf? “

Да, ты не ошибаешься, регулярность не так просто. Лично мне было намного проще выучить коррекс, чем произвольная структура, в которой есть только один вариант использования.

Каковы регулярные выражения?

Концепция регулярных выражений произошла в 1950 -х годах. В теоретической информатике это последовательность символов, которые определяют шаблон поиска. ( Википедия )

Итак, как выглядит регулярное выражение?

Представьте, что у нас есть строка:

Привет, я Курцгеданке и www.kurzgedanke.de – мой сайт.

Теперь мы хотим получить веб -сайт с конкретным доменом. Мы можем предположить, что каждый вход выглядит как www.websitename.tdl .

Одно решение, чтобы соответствовать этому с регулярными выражениями, может выглядеть так:

www\.(.*)\.([a-zA-Z]*)\s
  • www Как вы могли бы подозревать, это точно соответствует www
  • \ соответствует Анкет после www . Поскольку точка имеет функцию в корпорации, нам нужно избежать ее с помощью \ .
  • (.*) Анкет соответствует любым отдельным символам. Это A Или вкладка, она соответствует этому. Кроме того, новички. С Asterisc мы сопоставляем ноль или более символов выражения перед ним. В этом случае ноль или более любого отдельного символа. Клаженки () Поставляет матч в группу, к которой можно легко получить доступ.
  • \. Эта точка соответствует точке перед доменом верхнего уровня.
  • ([a-za-z]*) Здесь у нас есть домен верхнего уровня, который снова помещается в группу с () Анкет [] используются, чтобы соответствовать одному персонажу. В этом случае персонаж между нижним A до нижней части z или капитал A в столицу Z . Чтобы получить более одного персонажа * используется. [ Это забавно и классическая ошибка. Я не думал об этом полностью. URL -адрес, конечно, содержит черту - И я пропустил это. ]
  • \ s соответствует белому пространству. В этом случае он используется для завершения регулярного выражения.

Честно говоря, я думаю, что есть более разумные способы сделать это, но я считаю, что это легко увидеть, что происходит, и не ошеломленной из 50 символов.

Чтобы изучить регулярные выражения, я использовал интерактивный учебник, как это: regexone.com Анкет Это не единственный, и вы можете посмотреть, если найдете тот, кто вам подходит.

Еще один замечательный совет – такие сайты, как regex101.com Анкет Вы можете вставить в него текст и написать непосредственно свою форму, пока вы можете видеть в режиме реального времени, какие детали сопоставлены. Я использую его каждый раз, когда пишу какую -то форму.

Давай напишем немного питона

Мы можем использовать эти знания для отказа от веб -сайтов. И, честно говоря… Я буду полагаться на модуль под названием Запросы: http для Humas Анкет Но с этим модулем так легко справиться и питонично – иногда у меня есть ощущение, что он более питонический, чем сам Python.

Наша цель состоит в том, чтобы отказаться от моего веб -сайта и получить каждую статью на звание моей целевой страницы, а также ссылку на него.

Упрощенная версия HTML выглядит так:

Итак, что мы ищем в этом HTML? Посмотрим, мы хотим названия и URL всех постов. У нас есть несколько статей с классом Пост-просмотр Анкет А внизу у нас есть H2 Направляясь внутри div называется Пост-просмотр Анкет H2 содержит a href который собирает ссылку. Может быть хорошо! Каждый H2 имеет ту же структуру, и нам повезло, это единственный H2 с этой структурой на всей этой стороне. Таким образом, мы можем предположить, как и выше, что каждый вход выглядит точно так:

На других веб -сайтах H2 или a href иметь выделенный класс или удостоверение личности

Это еще лучше, потому что у нас будет постоянный шаблон, с которым можно было бы использовать.

Теперь позвольте нам написать нашу регуляцию для поиска.

Это просто представляет

(.*)<\/a><\/h2>

  • (.*) Выбирает все после post/ до /"> и ставит это в группу.
  • 2. (.*) соответствует названию сообщения
  • <\/a> <\/h2> Закрывает

тег и ярлык.

Теперь, когда мы написали регулярное выражение, давайте посмотрим на код Python.

  • Импорт Re импортировать модуль регулярного выражения из стандартной библиотеки
  • Запросы на импорт импорт Модуль запросов от Кеннет Рейтц Анкет
  • R.Get ('https://kurzgedanke.de/') делает HTTP -запрос в Kurzgedanke.de и обеспечивает данные в объекте запросов.
  • regex '...' объявляет переменную с регулярным выражением как значение. r '...' говорит Python, что эта строка является регулярным выражением.
  • titleurl.findall (regex, r.text) Мы используем модуль Regex, чтобы найти все совпадения с использованием наших переменных режима и R.Text который содержит HTML нашего HTTP -запроса. После того, как все будет найдено, это будет список со всеми совпадениями, назначенными titleurl Анкет
  • Для UrlandTitle в Titleurl: Мы можем легко итерации по списку и получить доступ к различным совпадениям с помощью массива, потому что мы сгруппировали их в нашем регулярном выражении с () Анкет

Когда вы запускаете сценарий, он должен выглядеть так:

Title:   Headless ssh and Wifi on RaspberryPi
URL:     https://kurzgedanke.de/post/headless-ssh-and-wifi-on-raspberrypi/
-------------------------------
Title:   How to Encrypt Files with AES
URL:     https://kurzgedanke.de/post/how-to-encrypt-files-with-aes/
-------------------------------
Title:   Problems with Flask and PyCharm
URL:     https://kurzgedanke.de/post/problems-with-flask-and-pycharm/
-------------------------------
Title:   Decentraland | How to Mine on a Mac
URL:     https://kurzgedanke.de/post/decentraland-hot-to-mine-on-a-mac/
-------------------------------
Title:   Welcome
URL:     https://kurzgedanke.de/post/welcome/
-------------------------------

Я надеюсь, что вы нашли эту маленькую запись полезной и научились немного.

Если у вас есть какие -либо вопросы или замечания, пожалуйста, оставьте комментарий, свяжитесь со мной в Твиттере или напишите почту.

Вы можете прочитать этот пост на kurzgedanke.de .

Оригинал: “https://dev.to/kurzgedanke/beginner-web-scraping-in-mostly-pure-python-6d0”