|
2 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 89
|
||||||
Очень нужны дельные советы: парсить сайт04.07.2013, 21:39. Показов 7929. Ответов 25
Метки нет (Все метки)
Стоит задача вытащить из сайта все закупки, которые были сделаны за период. Я полный новичок в теме, но уже начитанный новичок
Прошу подскажите какой тег нужно в брать в функции def handle_starrtag(self, tag,attrs), чтобы вытащить именно закупки с сайта? - по идеи ссылки? - но как именно те, что требуются...-подсказали обращаться через ключи (keys), но что-то расплывчато все очень. И еще дайте совет как верно подключиться к серверу нужной html-странички, прочел про класс from http.client import HTTPConnection и взял только con = HTTPConnection("http://etp.setonline.ru/app/Search/page") - но думаю это несовсем верно. Объясните кто что сможет.
0
|
||||||
| 04.07.2013, 21:39 | |
|
Ответы с готовыми решениями:
25
Очень нужны советы Диплом, ОЧЕНЬ нужны советы Дайте дельные советы по выбору ПК лимит 35т |
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 04.07.2013, 21:43 | |
|
модуль html применяется для создания своих парсеров
для парсинга используй сторонний модуль lxml
0
|
|
|
2 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 89
|
|
| 04.07.2013, 21:49 [ТС] | |
|
по идеи нужно создать свой парсер, поэтому и связался с html
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 04.07.2013, 22:06 | |||
|
создание своего парсера - это, например, сделать парсер, который будет распознавать теги, переводя их в какие-нибудь другие сущности то есть где подразумевается какой-то нестандартный разбор html-кода Добавлено через 52 секунды Добавлено через 4 минуты лучше сначала сохранить страницу на диске, и из неё вытаскивать данные а потом, когда будет готово, сделать часть скрипта, которая будет скачивать страницу
1
|
|||
|
2 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 89
|
|
| 04.07.2013, 22:08 [ТС] | |
|
А если позже нужно будет "Закупки" (которые каким-то для меня пока непонятным образом вытащить из ссылок) занести в базу CouchDB - вот ради этого стоит же писать свой парсер?!
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 04.07.2013, 22:21 | ||
|
база данных не должна знать, откуда взят текст, а html-страница не должна знать, что эти данные пойдут в базу данных это называется "минимальное сцепление" смысл того, чтобы сначала выбирать из страницы на диске, тоже в том, чтобы сделать минимальное сцепление (независимость от сети) Добавлено через 5 минут при минимальном сцеплении ты можешь данные из страницы направить не в базу данных, а обратно в сеть на другой сайт, либо не на другой сайт, а в электронную почту, либо не обратно в сеть, а в модуль, который сделает из этого pdf-документ текст имеет простейшую структуру, поэтому программы, обменивающиеся простым текстом, очень гибки Добавлено через 1 минуту wiki. принципы Unix
0
|
||
|
2 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 89
|
|
| 05.07.2013, 06:32 [ТС] | |
|
а как установить модуль lmxl на python3.3 ? по всякому пробую, не получается. подскажите??
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 05.07.2013, 06:43 | |
|
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||
| 05.07.2013, 08:37 | ||||||||||||
1
|
||||||||||||
|
2 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 89
|
|||||||||||||
| 09.07.2013, 23:22 [ТС] | |||||||||||||
|
Теперь пытаюсь поставить на домашнем компе уже прост осам питон 3.3. С помощью след.:
А при проверке, выдал след:
И еще будет вопрос. Добавлено через 17 минут (если можете подскажите пожалуйста.) Получилось так что с lmxl пришлось повременить..И нужен совет по след коду:
0
|
|||||||||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||||||||||||||||
| 10.07.2013, 08:45 | |||||||||||||||||||||||||
а в теге данных проверяешь его Добавлено через 2 минуты и для третьего питона пиши код для третьего питона не надо писать смесь для третьего и второго Добавлено через 3 часа 56 минут пример с lxml
0
|
|||||||||||||||||||||||||
|
7 / 7 / 5
Регистрация: 03.01.2009
Сообщений: 42
|
|
| 10.07.2013, 15:18 | |
|
Можно ли установить lxml-3.2.1.win32-py3.2 на python 3.3? По идее версии 3.3 и 3.2 совместимы?
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 10.07.2013, 16:25 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 7
|
|||||||||||||||||||||||||||||||||||||
| 10.07.2013, 22:08 | |||||||||||||||||||||||||||||||||||||
|
Сделайте снчала парсер просто для сохраненного файла с того сайта, для которого создаете парсер. Ведь получить html GET-запросом несложно, да и занесение в базу данных тоже после можно реализовать. Главное сам парсер, а для проверки правильности его работы, можно просто выводить на консоль что он спарсил. Это чем-то может напомнить разработку через тестирование. что касается html.parser из стандартной библиотеки языка, то он относится к sax-парсерам. Т.е. не строит DOM-дерево из html, а последовательно пробегает по символам строки. Покажу на вашем же примере. Мы создаем объект этого класса, и переопределяем часть его методов. Когда парсер "пробегается" по документу, он вызывает определенные методы, передавая различные данные в эти методы. Если вы говорите что вы начитан, то я не буду сильно вдаваться в подробности реализации парсера и структуры html документа. Метод handle_starrtag(self, tag,attrs) вызывается когда парсер встречает открывающийся тег ("<"), пробегает до завершающей ">" Вот что получается для строки
tag это имя самого тега, tag = "img" а attrs это массив кортежей всех его аттрибутов
для строки
пробел я специально оставил, чтобы показать, что если имеются пробелы, то строка передается как есть, вместе со всеми пробелами handle_endtag(tag) вызывается когда встречаем закрывающийся тег, например из предыдущей строки это бы был тег "</td>" Это наиболее часто используемые методы, про остальные можно почитать на официальном сайта языка, http://docs.python.org/3/library/html.parser.html Мы можем в любой момент узнать на какой позиции в тексте сейчас находится парсер, можем сбросить и начать парсинг сначала, и многое другое. Единственное НО состоит в том, что нам придется запоминать и анализировать, какой тег был открыт, закрыт или какие атрибуты были у данного тега, .... для того, чтобы точно знать, как поступать с данными в тот или иной момент. Возьмем вашу задачу. Можно увидеть, что у нужных ссылок <a id="ParametrizedPageLink_4" href="/app/OfferCard/page?OfferCard.offerUUID=Scorebofs000080 000jvadna9ehbqm2vk"> Общее начало у аттрибута id. Воспользуемся этим и продемонстрируем получение ссылок со страницы. P.S.: надеюсь это не наказуемо)) Для получения данных
Вот тривиальная реализация парсера, надеюсь поможет Добавлено через 7 минут из результатов видно, что в массив попали разные ссылки, среди них не только на закупки. Для этого следует добавить дополнительные условия, не буду сильно много расписывать как сделать, оставлю вам на самостоятельную работу
0
|
|||||||||||||||||||||||||||||||||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 10.07.2013, 22:26 | |||
|
Добавлено через 5 минут разработка сверху вниз эффективнее разработки снизу вверх, так как интерфейсы получаются с первого раза
0
|
|||
|
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 7
|
|
| 11.07.2013, 07:59 | |
|
urllib не дает требуемой гибкости. По крайней мере, я не нашел реализации чтобы в пределах одного соединения отправить несколько запросов, а не открывать каждый раз новое соединение для выполнения запроса. Если это возможно, то покажите как
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 11.07.2013, 09:36 | ||
|
да и цена этой оптимизации ?
0
|
||
|
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 7
|
||
| 11.07.2013, 22:56 | ||
|
0
|
||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 12.07.2013, 01:06 | |||
|
ты действительно думаешь, что urlopen() какая-то нерациональная функция ?
0
|
|||
| 12.07.2013, 01:06 | |
|
Помогаю со студенческими работами здесь
20
Оцените сборки, дельные советы - плюсик к в карму Очень нужны ваши советы по программе-справочнике! Сборка ПК (ДНС, 80-120к), очень нужны советы Очень нужны советы по решение, Кривошип, вращение
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|