Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2017 03:35:17

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

PooH
Пойдет?
Можно узнать по подробней как вы это получили?, ну и наверное данная ссылка не пойдет, так-как мне конкретно нужно получить “Дата публикации” как в первом посту на скрине.

Отредактировано Vigi (Фев. 22, 2017 03:35:43)

Офлайн

#2 Фев. 22, 2017 04:16:10

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

Vigi
Можно узнать по подробней как вы это получили
В chrome открыл инструменты разработчика, вкладку Network, опцию XHR и посмотрел запросы к серверу. Это приложение написано на angular, оно тянет данные с сервера и строит по ним страницу, вот я и посмотрел какие именно данные оно тянет. С параметрами запросов еще надо разобраться, но это уже сами.

PS: привет земляк, я с Барнаула



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Фев. 22, 2017 04:17:13)

Офлайн

#3 Фев. 22, 2017 04:44:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

Vigi
Что-то странное у вас
Когда весь Интернет открывается, а какой-то один сайт не открывается, то он идёт на три весёлых буквы. Не буду я браузер менять из-за какой-то недоработки, потому что мой браузер для меня ценен и важен (и вообще бэкапится по своему).



Офлайн

#4 Фев. 22, 2017 04:44:58

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

PooH
В chrome открыл инструменты разработчика, вкладку Network, опцию XHR и посмотрел запросы к серверу. Это приложение написано на angular, оно тянет данные с сервера и строит по ним страницу, вот я и посмотрел какие именно данные оно тянет. С параметрами запросов еще надо разобраться, но это уже сами.
сенькс, поковыряюсь…

PooH
PS: привет земляк, я с Барнаула
Привет! я 276 км от вас в сторону Рубцовска

Офлайн

#5 Фев. 22, 2017 05:52:29

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

наверное нужно в сторону selenium на движке PhantomJS смотреть….?

Офлайн

#6 Фев. 22, 2017 09:45:31

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

Vigi
ак-как мне конкретно нужно получить “Дата публикации” как в первом посту на скрине.
если только это то можно спарсить phantomjs страницу в pdf и pdf в text, selenium не нужен
http://osotov.github.io/pdf-generation_with-phantomjs/

js content

Отредактировано vic57 (Фев. 22, 2017 11:12:45)

Офлайн

#7 Фев. 22, 2017 10:43:59

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

у тебя задача сложнее. попробовал спарсить

 var page = require('webpage').create();
var fs = require('fs');
var path = 'page.html';
var url='http://bus.gov.ru/pub/agency/8968/tasks/3472492';
page.open(url, function (status) {
  console.log('status:',status);
  var content = page.content;
  fs.write(path,content,'w');
  phantom.exit();
});
получил в консоли ошибки
 bash-3.2$ phantomjs render.js 
Error: [$injector:modulerr] Failed to instantiate module gmuApp due to:
[$injector:nomod] Module 'gmuApp' is not available! 
You either misspelled the module name or forgot to load it. 
If registering a module ensure that you specify the dependencies as the second argument.

Отредактировано vic57 (Фев. 22, 2017 10:44:48)

Офлайн

#8 Фев. 22, 2017 11:24:08

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

получилось через браузер - сохранить как PDF и через PDF to Text
но в общем-то костыль

Прикреплённый файлы:
attachment info.txt (3,1 KБ)

Офлайн

#9 Фев. 22, 2017 13:24:30

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

в обчем получилось так:

 from selenium import webdriver
driver = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
url = 'http://bus.gov.ru/pub/agency/8968/tasks/3472492'
driver.get(url)
html = driver.page_source
f = open("f.html","w+")
for i in html:
    f.write(i.encode("utf-8"))
f.close()

Офлайн

#10 Фев. 22, 2017 16:33:59

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Спарсить данные с указанного url

vic57
Ну спасибо огромное. Хоть что - то сдвинулось с мертвой точки
Сам сижу разбираюсь с selenium.
В общем пока получилось что хотел вот так (предварительно):

 from selenium import webdriver
from bs4 import BeautifulSoup as BS
def get_page_html(url):
    driver = webdriver.Firefox()#Движок в коде с проектом, по этому путь не указан
    driver.get(url)
    html = driver.page_source
    driver.quit()
    return html
def pars(html):
    soup = BS(html, 'lxml')
    return soup.find('div', class_='info-date ng-binding ng-scope').text.strip()
def main(urls):
    for url in urls:
        print(pars(get_page_html(url)))
if __name__ == '__main__':
    main(['http://bus.gov.ru/pub/agency/8968/tasks/3472492',
          'http://bus.gov.ru/pub/agency/8968/plans',
          'http://bus.gov.ru/pub/agency/8968/operations/'
          ])
Почему то с движком PhantomJS не тот ресурс получается.. А так код работает вот бы еще браузер перед глазами не мелькал…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version