Найти - Пользователи
Полная версия: Не работает парсер
Начало » Центр помощи » Не работает парсер
1 2 3 4
Tenebras
На разных станциях в разное время может быть или не быть информации. Поэтому список меняется.
Показатели облаков - меняются постоянно…

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

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

Tenebras
Ну у меня

execution time 9.25417685509 0.217932939529


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


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

А почему?

Для него какие-то иные методы?
Tenebras
vic57
очень долго. там на сайте csv есть, его проще парсить

А почему?

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

vic57
провел эксперимент, все данные загрузились в таблицу за 2.5 сек
Tenebras
Не осиливаю… Вышенаписанное пока не для моего скудного мозга

Хотел просто разбить 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

Почему???
vic57
чего там осиливать? ты файл посмотри в 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_()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB