Я давно не писал пост, но это только потому, что у меня не было времени. Реально не успел, не то что «оправдываться, не успел». Я остаюсь занятым, и мне это нравится.

С сегодняшнего дня я нахожусь в состоянии затишья (и к тому же меня тошнит), поэтому я ответил на вопрос на Reddit о разработке Raspberry Pi, и я получил личное сообщение от человека, который его читал и был заинтересован в изучении. как я подошел к новому проекту с Python. Я написал длинный ответ, поэтому решил поделиться им здесь. Это полностью считается записью в блоге ;-)

Привет,

Я видел ваш пост о программировании или рашпиле для тех, кто изучает python. Моя база знаний, вероятно, принадлежит им, однако я все еще заинтересован в изучении Python. На самом деле я занимаюсь изготовлением волшебного зеркала.

Мне было интересно, где будет хорошая отправная точка для изучения CLI, очистки данных и создания графического интерфейса. Я хотел бы сделать столько, сколько я лично мог.

Ваше здоровье,

X

Вот мой ответ:

Hi X!,

Это действительно хорошее руководство:

http://docs.python-guide.org/en/latest/scenarios/scrape/

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

Например, предположим, что я живу в Лос-Анджелесе (что я и делаю) и хочу следить за землетрясениями, чтобы мое волшебное зеркало могло сообщать мне, когда я просыпаюсь, если что-то случилось, пока я спал. Первое, что я бы сделал, это погуглил библиотека землетрясений на Python, и что было бы первым? Очень подробное руководство о том, как использовать Python для мониторинга землетрясений, включая карты и прочее, выходящее за рамки того, что я ищу.

Поскольку это немного утомительно, и я не совсем готов погрузиться в matplotlib (это графический материал, который они используют), давайте посмотрим, что представляют собой следующие несколько ссылок:

Так что у нас есть выбор. Поскольку меня действительно волнуют только землетрясения, воздействующие на бассейн Лос-Анджелеса, я просмотрю библиотеки и выясню, какие из них имеют лучший интерфейс, чтобы позволить мне географически выбирать вещи, а затем двигаться дальше.

Итак, это существующая библиотека, но предположим, что нам нужно очищать экран? Например, что, если вы хотите сгенерировать число для средних цен на аренду в почтовом индексе? Ну, сначала ищите цены на аренду библиотеки python, и ничего нет, поэтому нам придется сделать это сложным путем.

Почти наверняка есть лучшие способы, но в качестве примера давайте взглянем на ApartmentGuide.com (обратите внимание, то, что мы делаем, вероятно, противоречит условиям обслуживания, поэтому вам, вероятно, не следует предлагать это как общедоступное решение). — просто оставьте для личного пользования). Это позволяет нам указать почтовый индекс, пару быстрых фильтров, и когда мы ищем, это дает нам большую часть этого по URL-адресу. Очень просто!

Когда я ищу апартаменты с двумя спальнями по почтовому индексу своей работы, я получаю эту ссылку:

http://www.apartmentguide.com/zip/90250-Apartments-For-Rent/2-beds-1z141y8/

Мне, как человеку, легко посмотреть на этот URL и понять, что это такое, за исключением 1z141y8. Я беспокоюсь, что это может быть уникальный идентификатор, почти как файл cookie, который гарантирует, что я был тем, кто загрузил предыдущую страницу. Однако, когда я смотрю на исходный код исходной страницы (очень уродливый), я вижу, что он появляется здесь:

‹meta class="pageInfo" content="2-beds-1z141y8 name="уточнения"›

По наитию я снова захожу на страницу результатов, меняю почтовый индекс на Колумбус, штат Огайо, где я жил некоторое время, и нажимаю Enter. Результаты по Колумбусу всплывают, так что я думаю, что мы готовы к работе.

Итак, учитывая самую первую ссылку, которую я упомянул (помните?), я просматривал результаты веб-страницы с помощью XML-скребка и получал нужную мне информацию, а затем делал с ними все, что мне нужно — среднее значение или что-то еще.

Имеет ли это смысл? Спасибо!

— Мэтт

В общем, так я и подхожу к проблеме, независимо от языка. Иногда, если я действительно увлечен проектом, я на самом деле пишу библиотеку сам (как я сделал с libMBTA), но мир постепенно становится одним большим API, и если вы можете программа, вы можете воспользоваться ею!

Я надеюсь, что вам понравилось. Если это так, дайте мне знать в комментариях. Спасибо!