Форум сайта python.su
0
Доброго времени суток! Это мой первый опыт знакомства с Python поэтому не судите строго! Есть сайт http://booking.uz.gov.ua/ при попытки парсить его приходят пустые поля так как там для построения таблицы нужно заполнить поля поиска. Вот собственно вопрос: чем можно и можно ли вообще заполнить поля для последующего парсела страницы? Или есть альтернативный способ парсела подобной страницы? Заранее спасибо.
Офлайн
857
malkirПоставь Wireshark, заполни и посмотри, что отправляется.
Вот собственно вопрос: чем можно и можно ли вообще заполнить поля для последующего парсела страницы?
Отредактировано py.user.next (Авг. 19, 2015 00:39:50)
Офлайн
0
Установил, попытался увидеть что отправляется, не выходит
. К сайту у меня только пользовательский доступ, и как мне эта программа поможет перед парселом заполнить форму для поиска?
Офлайн
857
malkirФорма просто собирает введённые данные и составляет запрос с ними для отправки на сервер. Задача скрипта заключается в том, чтобы сразу составить запрос. А для этого надо узнать его структуру, которую обычно видно через сниффер.
и как мне эта программа поможет перед парселом заполнить форму для поиска?
Офлайн
33
py.user.nextWireshark это overhead, достаточно просто в консоли браузера посмотреть запросы.
Поставь wireshark, заполни и посмотри, что отправляется.
Офлайн
0
Угу вроде получил структуру
. Теперь чем я могу их задать при парселе? Всмысле чтобы была построенна таблица сначала нужно используя эту структуру задать параметры для поиска. А как это сделать? Я так понимаю нужно сделать отдельный скрипт который будет это делать или можно все в один скрипт поместить? И чем эможно такое заполнение реализовать?
Прикреплённый файлы:
1.jpg (381,0 KБ)
Офлайн
857
BudulianinБраузеры все разные, а Wireshark - не только один, но и показывает всё.
Wireshark это overhead, достаточно просто в консоли браузера посмотреть запросы.
malkirНе парселе, а парсинге.
чем я могу их задать при парселе?
malkirВот позадавай их разные, и посмотри, что отправляется при этом.
чтобы была построенна таблица сначала нужно используя эту структуру задать параметры для поиска. А как это сделать?
>>> import urllib.parse >>> >>> urllib.parse.urlencode({'a': 'b', 'c': 'd'}) 'c=d&a=b' >>>
Отредактировано py.user.next (Июль 15, 2015 15:00:24)
Офлайн
33
py.user.next
Браузеры все разные, а Wireshark - не только один, но и показывает всё.
Отредактировано Budulianin (Июль 15, 2015 16:31:35)
Офлайн
0
ммм что-то не выходит
.
Как только не пробовал уже, что-то в коде вроде, может подскажете что?
from bs4 import BeautifulSoup from urllib.parse import urlencode import urllib.request def getSerch(): baseurl='http://booking.uz.gov.ua/' wert = {'station_id_from': '2200001', 'station_id_till': '2208536', 'station_from': 'Киів', 'station_till': 'Миколаів Пас', 'date_dep': '21.08.2015', 'time_dep': '00:00', 'time_dep_till': '', 'another_ec': '0', 'search': ''} return (baseurl, urlencode(wert)) def get_html(url): response = urllib.request.urlopen(url) return response.read() def parse(html): soup = BeautifulSoup(html) table = soup.find('table', class_='vToolsDataTable') ''' projects = [] for row in table.find_all('tr'): cols = row.find_all ('td') projects.append( { 'title': cols[0].a.text }) for project in projects: print (project)''' print (table) def main(): parse (get_html('http://booking.uz.gov.ua/')) if __name__=='__main__': main()
Отредактировано malkir (Июль 15, 2015 20:00:09)
Офлайн
857
BudulianinКак ты узнал, что в любом браузере тебе показывают всё?
Да в любом браузере есть возможность запросы просмотреть)
malkirНет пост-запроса. Когда запускаешь скрипт, смотри так же через сниффер, что отправляется, равно ли оно тому же, что отправляет браузер.
может подскажете что?
Офлайн