Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2017 07:57:32

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает парсер

На разных станциях в разное время может быть или не быть информации. Поэтому список меняется.
Показатели облаков - меняются постоянно…

и как ты алгоритмы придумываешь?

Что значит КАК?

Офлайн

#2 Март 2, 2017 08:15:23

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

Не работает парсер

Tenebras
Что значит КАК?
очень нерационально. мой код выполняется за 20 сек с учетом запроса к сети

Офлайн

#3 Март 2, 2017 08:25:55

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает парсер

Ну у меня

execution time 9.25417685509 0.217932939529


Полный список в 3800 он обработал минут за 5 - 7… Не плохо. Но хотелось бы ускорить.


Не научился я писать рациональные и элегантные скрипты…

Офлайн

#4 Март 3, 2017 17:40:39

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

Не работает парсер

Tenebras
Полный список в 3800 он обработал минут за 5 - 7… Не плохо. Но хотелось бы ускорить.
очень долго. там на сайте csv есть, его проще парсить

Офлайн

#5 Март 3, 2017 18:21:44

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает парсер

vic57
очень долго. там на сайте csv есть, его проще парсить

А почему?

Для него какие-то иные методы?

Офлайн

#6 Март 3, 2017 18:21:46

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает парсер

vic57
очень долго. там на сайте csv есть, его проще парсить

А почему?

Для него какие-то иные методы?

Офлайн

#7 Март 3, 2017 19:21:07

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

Не работает парсер

структура xml -дерево, csv - таблица
csv можно построчно парсить, в питоне встроено

Офлайн

#8 Март 3, 2017 23:51:58

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

Не работает парсер

провел эксперимент, все данные загрузились в таблицу за 2.5 сек

Прикреплённый файлы:
attachment scr.png (155,7 KБ)

Офлайн

#9 Март 17, 2017 23:29:58

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает парсер

Не осиливаю… Вышенаписанное пока не для моего скудного мозга

Хотел просто разбить CSV на строки и мз каждой, разбив на части, взять по индексу нужное значение.
Что-то не так, а что не пойму.

 #!/usr/bin/env python
# coding:utf8
import urllib
import csv
url = 'https://aviationweather.gov/adds/dataserver_current/current/metars.cache.csv'
urllib.urlretrieve(url, filename='metar.csv')
file = open('metar.csv').readlines()
for f in file:
	s = f.split(',')
	print s[1]

>>> IndexError: list index out of range

Почему???

Отредактировано Tenebras (Март 17, 2017 23:30:21)

Офлайн

#10 Март 18, 2017 02:10:57

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

Не работает парсер

чего там осиливать? ты файл посмотри в excel хотя бы. данные с 6 строки начинаются

 # coding:utf-8
import urllib
import gzip
from time import time
from PyQt4.Qt import *
def get_gz(gz_name):
    out = []
    with gzip.open(gz_name,'rb') as gz:
        lines = gz.readlines()
        for line in lines:
            out.append(line.split(','))
    return out
class Table(QTableWidget):
    def __init__(self):
        QTableWidget.__init__(self)
        self.setFont(QFont("times",14))
    def setData(self,table):
        cols = len(table[0])
        rows = len(table)
        self.setRowCount(rows)
        self.setColumnCount(cols)
        for i in xrange(rows):
            for j in xrange(cols):
                item = QTableWidgetItem()
                item.setText(table[i][j])
                self.setItem(i,j,item)
    def setHeaders(self,lst):
        out = []
        for x,i in enumerate(lst):
            out.append(str(x) + "\n" + i.strip())
        self.setHorizontalHeaderLabels(out)
        self.resizeColumnsToContents()
if __name__ == "__main__":
    app = QApplication([])
    t1 = time()
    url = 'https://aviationweather.gov/adds/dataserver_current/current/metars.cache.csv.gz'
    urllib.urlretrieve(url,filename='metar.csv.gz')
    t2 = time()
    table = get_gz('metar.csv.gz')
    t = Table()
    t.setData(table[6:])
    t.setHeaders(table[5])
    t.setColumnHidden(0,True)
    t.resize(900,600)
    t.move(0,0)
    t.show()
    t3 = time()
    print t2 - t1,t3 - t2,' '.join(table[4]),
    app.exec_()

Отредактировано vic57 (Март 18, 2017 02:51:28)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version