Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3492 posts.

Python для новичков » Ищу консультанта по data mining (желательно в Москве) » Янв. 18, 2017 15:08:31

Ищу человека который на платной основе поможет со сбором данных по рынку недвижимости Москвы. Задача состоит из трех частей: сбор информации, хранение в базе данных, анализ. Вопросы будут по технической части. Для примера:
1. Как парсить страницу с AJAX
2. Как правильнее экспортировать данные в базу
3. Как автоматизировать процесс парсинга на протяжении полугода: постоянный сбор и обновление информации
4. и т.д.
Сейчас из инструментов использую scrapy, postgres, excel.

В программировании я новичок, поэтому будет много базовых вопросов. Этот проект для меня тренировочный, поэтому ищу скорее сенсея чем просто специалиста. Формат работы - желательно личная встреча в Москве. Но если вы не из Москвы, то можно рассмотреть и скайп. Вопросы для обсуждения буду присылать заранее. Оплата почасовая.

Присылайте в личку информацию о себе, контакты и предложение цены.

Евгений.

Django » Ошибка которая то выскакивает, то нет. » Янв. 17, 2017 10:53:48

Здравствуйте, если вопрос элементарный, то прошу не ругать за него.

Суть вопроса вот в чем. В моем проекте, на котором я учусь django есть такой участок кода:
 # Получение Хэш значения
def to_sha512(strconvert):
    m = hashlib.new('sha512')
    strconvert_byte = bytes(strconvert, 'utf-8')
    m.update(strconvert_byte)
    return m.hexdigest()

Когда запускаю сервер обычным для django методом:
python3 manage.py runserver
и код вызывает эту функцию, проблем никаких не возникает.

Но, когда я этот проект открываю в браузере с использованием сервера apache2, то, когда код вызывает эту функцию, мне выдается ошибка:
Unicode-objects must be encoded before hashing
и ошибка ссылается на строку:
strconvert_byte = bytes(strconvert, ‘utf-8’)

Если кто знает, подскажите в чем дело.

Python для новичков » Настроить дефолтный шрифт для текста » Янв. 16, 2017 05:51:19

Есть программа где при вызове из меню справочных файлов, открывается окно с текстом этих файлов.
Сами файлы хранятся в обычном тексте, окно называется именем файла. Вызов в строке 1306 gui.py .
Раньше стоял локальный питон, но система накрылась, приделал портативный отсюда , потомучто сборка требует много библиотек с разных мест.
Сразу заметил что неактивные поля стали голубоватого цвета и вроде бы всё работало как раньше. То что работало продолжило работать, то что не работало и дальше не работает, видимо собиралось под мак.
Но теперь открыл файл справки и прочитать его совершенно невозможно. Помню что и раньше текст там был мелкий, но теперь он и вовсе в 4 пикселя в высоту.

Где хранятся файлы конфигурации если они есть вообще, или этот шрифт вкомпилирован и не меняется?
Пробовал подложить в папку App содержимое прошлого питотна, но оно не работает. Да и раньше тоже какойто портативный пробовал запускать и не заработал.



Вся куча файлов свалена пробовал подложить в папку примерно тут
————
Оказалось проще вписать font = (10) в свойства Text .
Только придётся вписывать и в остальные окна вывода

Python для новичков » Включить шаблоны отладки на продакшн-сервере » Янв. 16, 2017 00:54:45

Django 1.8.5 + nginx + uWSGI. На тестовом сервере не могу отловить ошибку.
 Internal server error

Временно поставил флаг в продакшн настройках Debug = TRUE и выполнил команду
 ./manage.py runserver --settings=base.settings.production

Но не получил ожидаемой детализации ошибки по адресам
 mytestingsite.ru
mytestingsite.ru:8000

Как включить дебаг-шаблоны на продашне? И как нормально настроить логи сайта на джанго, а то сейчас могу отслеживать только nginx?

Network »  Как спарсить POST данные в Google Plus » Янв. 15, 2017 13:04:33

Здравствуйте. В Google + (Plus) есть community (сообщества), необходимо вступить туда программно. (Пример группы: https://plus.google.com/communities/105484898574579059070)
Вопрос заключается в том, что я не могу понять откуда берутся POST данные, их нет в POST форме и нет в загружаемых файлах (JS, или другие подгружаемые файлы.) Есть догадка что они формируются с помощью Java Script. Я сделал breakpoint на XHR запрос с содержанием ссылки:



В call стеке вот такой вот код, в котором я пока мало чего понимаю:



Вот такие вот POST данные:



Помню, как ковырял одноклассники там всегда передавался дополнительный токен и тоже казалось что он генерируется с помощью JS, но сразу после поста в форумы обнаружил что токен можно вытянуть с cookies. Это я к тому что данные возможно откуда то вытягиваются уже готовые, но я пока этого не нашел. Буду благодарен вам если поможете мне понят как это происходит здесь и можно ли вытянуть данные. Хотя бы помогите понять в каком направлении рыть, потому что ковырять код сжатый компрессором (особенно при поверхностных знаниях JS) кажется маленьким безумием.

Для модераторов: Если я вдруг запостил тему не в тот раздел прошу не сносите топик, отпишите здесь и я создам там где нужно, или просто перенесите сами. Спасибо.

GUI » Динамическое объединение строк QTableView по данным из QAbstractTableModel » Янв. 14, 2017 10:52:29

Здравствуйте.
Есть таблица(QTableView) и модель(QAbstractTableModel). Модель берет данные из xml файлов и возвращает в виде двух столбцов: имя тега и текст внутри. Но иногда внутри xml встречается комментарий, и хотелось бы отобразить его в виде сдвоенной строки. Подскажите, как-то возможно это реализовать?

Django » django portable python » Янв. 13, 2017 00:22:42

На ПК рабочем нет прав. админ. хочу установить portable python и поработать с django.
Вопрос будет ли работать portable python 3.5.2.3 (установочник WinPython-64bit-3.5.2.3.exe
или WinPython-64bit-3.5.2.3Zero.exe) с django, есть инструкция http://portablepython.com/doc/2.7/django/
попытался установить по ней ввел команду в WinPython Interpreter ошибка
syntax error
Помогите, кто знает можно ли работать с джанго на этой версии и как установить джанго

Python для новичков » Синхронизация Python с RDP. » Янв. 9, 2017 11:42:16

В общем вопрос простой до жути. Интересует синхронизация Python с RDP. Часть кода, отвечающая за подключение к RDP успешно работает. Но дальше мне нужно получить список процессов с удаленного рабочего стола. Кто-то подскажет, как это сделать? Ибо при обычном обращении к Taskmgr считывание будет происходить с моего компьютера.

Python для новичков » Установка OpenElectrophy » Янв. 8, 2017 10:52:54

Привет, у меня следующая ситуация…
Моя цель - открыть графический интерфейс OpenElectrophy. Кто-нибудь может помочь с установкой OpenElectrophy на WinPython 2.7.10.3.
1. Попробовал уставить через Control Panel по инструкции: https://pythonhosted.org/OpenElectrophy/installation.html
После установки установленные пакеты не отображаются в закладке “Uninstall packages”, хотя во время установки ошибки не возникли.
2. Потом попробовал установить через PIP и easy_install. Вовремя установки pyqtgraph выходит следующая ошибка “No matching distribution found for pygtgraph”.
Так же во время установки OpenElectrophy выходит ошибка “Command ”python setup.py egg_info“ failed with error code 1 in c:\users\…\openelectrophy”.
См. скрины ошибок во вложении.

Python для экспертов » IPictureDisp python pywin32 » Янв. 6, 2017 12:28:48

Добрый день, пишу com плагин для программы Autodesk Inventor, возникла проблема с созданием кнопки. Чтобы передать иконку для кнопки, нужно привести ее к типу IPictureDisp, в мануалах к pywin32 про это ни слова, в интернетах тоже, может кто то сталкивался с такой проблемой и знает решение?

вот сигнатура метода
Sub AddButtonDefinition(DisplayName As String, InternalName As String, Classification As CommandTypesEnum, ByRef ClientId As [optional] VARIANT, ByRef DescriptionText As [defaultvalue("")] BSTR, ByRef TooltipText As [defaultvalue("")] BSTR, ByRef StandardIcon As [optional] VARIANT, ByRef LargeIcon As [optional] VARIANT, ByRef ButtonDisplay As [defaultvalue(kDisplayTextInLearningMode)] ButtonDisplayEnum, Result As [out, retval] ButtonDefinition*)

пример из мануала
Dim oControlDefinitions As ControlDefinitions
Set oControlDefinitions = oApp.CommandManager.ControlDefinitions

Dim oLargeIcon As IPictureDisp
Dim oSmallIcon As IPictureDisp
Set oLargeIcon = LoadPicture(App.Path & "\Large.ico")
Set oSmallIcon = LoadPicture(App.Path & "\Small.ico")

Set oButtonDefinition = oControlDefinitions.AddButtonDefinition( _
"Display Name", "invrSampleCommand", _
kShapeEditCmdType, "CLSID of the AddIn", _
"Description Text", "Tooltip", _
oSmallIcon, oLargeIcon, _
kDisplayTextInLearningMode)[code]

Python для новичков » Помогите найти ошибку » Дек. 28, 2016 13:36:39

У меня есть модуль:
 # -*- coding:utf-8 -*-
#thatModule.py
import pickle
import time
VERSION_NOTES = []
class versionNote(object):
    def __init__(self, versionNumber, versionNote):
        self.versionNumber = versionNumber
        self.versionNote = versionNote
        self.date = time.asctime()
        return None
    def showNote(self):
        return self.versionNote
def dumpVersions(versions):
    dumpFile = open('versionsDump.pickle', 'wb')
    versionDump = pickle.dump(versions, dumpFile)
    dumpFile.close()
    return None
def undumpVersions():
    dumpFile = open('versionsDump.pickle', 'rb')
    versionDump = pickle.load(dumpFile)
    dumpFile.close()
    return versionDump
def showNote(versionNumber = '0', versionIndex = -1, versions = VERSION_NOTES):
    versions =  undumpVersions()
    if versionNumber != '0':
        for version in VERSION_NOTES:
            if version.versionNumber == versionNumber:
                versionIndex = VERSION_NOTES.index(version)
        if versionIndex == -1:
            return 'VersionNumber was not found'
    try:
        return VERSION_NOTES[versionIndex].showNote()
    except IndexError:
        return 'VersionIndex was not found'
if __name__ == '__main__':
    VERSION_NOTES = undumpVersions()
    print(showNote())

Ещё у меня есть основная программа, в которой я делаю примерно так:
  #main.py
import thatModule
def mainAction():
    versionNote = updates.showNote()
    print(versionNote)
mainAction()

Перед выполнением основной программы я задампил один экземпляр versionNote, и он был вполне нормален. При выполнении thatModule у меня всё получается, и никаких ошибок нет.
При выполнении main.py у меня примерно такой трейсбек:
 Traceback (most recent call last):
  File "main.py", line 139, in <module>
    mainAction()
  File "main.py", line 86, in mainAction
    versionNote = thatModule.showNote()
  File "C:\Users\BearPro\Documents\Visual Studio 2015\Projects\project\thatModule.py", line 28, in showNote
    versions =  undumpVersions()
  File "C:\Users\BearPro\Documents\Visual Studio 2015\Projects\project\thatModule.py", line 23, in undumpVersions
    versionDump = pickle.load(dumpFile)
AttributeError: Cant get attribute 'versionNote' on <module '__main__' from main.py'>
Ошибку свою понять не могу, хотя догадываюсь что это как-то связано с пространствами имён.
Помогите?

Центр помощи » Помогите составить алгоритм  » Дек. 27, 2016 21:15:34

Есть список, содержащий вложенные списки вида:
 [[10, "zero", 76]
[10, "fourth1", 4]
[50, "third1", 100]
[20, "third2", 69]
[80, "second1", 55]
[200, "second2", 1000]
[600, "first", 20]
[100, "second3", 90]
[15, "fourth2", 0]
[45, "third3", 0]
[900, "second4", 95]
[90, "second2", 1000]
[60, "third1", 100]]
Первые значения списков взаимосвязаны формулам
secondX = x*firstX and q*firstY
thirdX = y*secondX and z*secondY and a*secondZ
fourthX = b*thirdX and c*thirdY and d*thirdZ
Своего рода рецепт:
бутерброд = 2 куска хлеба + кусок колбасы + сыр + 3 ветки укропа
кусок хлеба = 5 муки + 2 воды + 1 дрожжей
кусок колбасы = 2 крысиных головы + 5 газет + приправа
Третьи значения вводятся пользователем и являются не отрицательными целыми числами.
Задача приготовить 10 бутербродов с сыром и 15 бутербродов с ветчиной из хлеба, сыра и т.д. Если колбасы не хватает, то готовим её из газет и крысиных голов и т.д.
Если не хватает дрожжей на то, чтобы приготовить всё недостающее количество хлеба на бутерброды с сыром, то готовим сколько возможно и из оставшихся продуктов готовим бутерброды с ветчиной.
Количество рецептов и количество компонентов каждого рецепта меняется и заранее не известны.
Как объяснить понятнее не знаю, к сожалению.

Помогите записать это на питоне.

Python для новичков » Граббер grab » Дек. 26, 2016 16:25:59

Прошу помощи уважаемых форумчан.
Начал писать грабер (python 3 + grab 0.6), но не могу залогиниться на сайте.
Проблема в том, что на странице входа 2 кнопки, одна для логина, вторая для регистрации.

 	
	number = '+38(091)444444'
        pwd = "34eddfs34fg"
        g=Grab()
	g.go('https://my.3mob.ua/ru/')
        g.set_input('Phone', number)
        g.set_input('InputPassword', pwd)

На другом сайте эта конструкция отрабатывает, но там одна кнопка входа.

Нашел ответ.

В документации написано, что :
submit_name - позволяет “нажать” нужный вам submit-элементов (полезно, если их несколько)
+
http://python.su/forum/topic/22633/?page=1#post-117819

Но не могу разобраться в коде страницы
 <button type="submit" id="enter-btn" class="btn btn-success main-btn" type="submit" >Вхід</button>
получается, что у кнопки нет атрибута name ?

Python для экспертов » проблема erlang и rabbitmq » Дек. 25, 2016 23:19:53

при запуске “rabbitmq-plugins enable rabbitmq_management” вылезает ошибка “Failed to initialize erlang distributiuon” облазил весь гугл нет ничего конкретного на эту тему , версии стоят последние, windows 7 , подскажите как решить проблему

Центр помощи » Помогите, пожалуйста, найти причину затирания значений » Дек. 23, 2016 22:32:49

В ходе решения задачи (https://py.checkio.org/mission/the-square-chest/) я написал вот этот код:
 def checkio(lines_list):
    square_list = []
    temp_lines_list = [0] * 4
    
    for line_1 in lines_list:
        temp_lines_list[0] = line_1
        
        for line_2 in lines_list:
            if line_2 in temp_lines_list[:1]:
                continue
            if (line_1[1] not in line_2) and (line_1[0] not in line_2):
                continue
            temp_lines_list[1] = line_2
            
            for line_3 in lines_list:
                if line_3 in temp_lines_list[:2]:
                    continue
                if (line_2[1] not in line_3) and (line_2[0] not in line_3):
                    continue
                temp_lines_list[2] = line_3
                    
                for line_4 in lines_list:
                    if line_4 in temp_lines_list[:3]:
                        continue
                    if (line_3[1] not in line_4) and (line_3[0] not in line_4):
                        continue
                    if (line_1[0] not in line_4) and (line_1[1] not in line_4):
                        continue
                    temp_lines_list[3] = line_4
                    #print(temp_lines_list)
                    temp_lines_list.sort()
                    #print(temp_lines_list)
                    #print(square_list)
                    #print(temp_lines_list in square_list)
                    if temp_lines_list not in square_list:
                        square_list.append(temp_lines_list)
                        
    print('square_list = ', square_list)
    return(len(square_list))
res = checkio([[1, 2], [3, 4], [1, 5], [2, 6], [4, 8], [5, 6], [6, 7],
                     [7, 8], [6, 10], [7, 11], [8, 12], [10, 11],
                     [10, 14], [12, 16], [14, 15], [15, 16]])
print(res)
Наблюдая за промежуточными значениями square_list я понимаю, что я правильно нахожу линии, соединяющие все 3 квадрата, но проблема в том, что при новые элементы никогда не добавляются в square_list.
При появлении новой комбинации она не добавляется, а как бы заменяет предыдущую.

Помогите, пожалуйста. Я действительно не могу понять в чем дело. Пробовал делать square_list в виде set, но он же путает элементы местами и из-за этого создается большее число комбинаций. Потом пробовал добавлять линии в square_list без проверок, но в конце получался список с большим числом абсолютно одинаковых линий.

Центр помощи » очень нужно,пожалуйста.перепробовала много разных вариантов уже,но окошко не выводится,как сделать?в чем ошибка » Дек. 22, 2016 14:43:36

 import sys
from MAIN import Ui_MainWindow
from PyQt5 import QtCore, QtGui,QtWidgets
from dialog3 import Ui_Dialog3
class Secwin(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.ui = Ui_Dialog3()
        self.ui.setupUi(self)
            
class main(QtWidgets.QMainWindow,Ui_MainWindow):
    def __init__(self,parent=None):
        QtWidgets.QMainWindow.__init__(self,parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.open_win)
    def  open_win(self):
        child=Secwin(win1,QtWidgets.QtDialog)
        child.setWindowModality(QtWidgets.QtWindowMogal)
        print(child.windowType() == QtWidgets.Qt.Dialog)
        child.show()
            
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    win1 = main()
    win1.show()
    sys.exit(app.exec_())

Network » Selenium + Tor » Дек. 20, 2016 21:05:47

Пол дня промучался, но решения так и не нашел. В общем решил я проверить, можно ли пользоваться Тор браузером через Селениум, на что гугл мне выдал радостную информацию. Пол часика поисков привели меня к написанию вот такого кода:
 from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary(r"C:\Program Files\Tor Browser\Browser\firefox.exe")
profile = FirefoxProfile(r"C:\Program Files\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default")
driver = webdriver.Firefox(profile, binary)
driver.get("2ip.ru")
После запуска, мне выдаёт вот такие ошибки:





Гугл ответа так и не дал.

Python для новичков » Кеширование данных » Дек. 18, 2016 10:46:47

Привет.
Есть задача - определить разделительную полосу на дорого на видеозаписе
Для сглаживания хотел бы X,Y начала и конца линиии с предыдущих 5 кадров сохранять в очереди
чтобы выводить среднюю. Вопрос как правильно сделать кеш и как его обнулять

Сейчас скрипт состоит из нескольких функций. Соответственно одна функция запускает другие.
Самая важная выглядит так:

def run():
lines = find_lines()
if lines is not None:
line = create_main_line(lines)
return line
create_main_line собственно создает из нескольких линий одну. и вот так как run запускается для каждого кадра - я хотел бы сохранять последние 5 значений line в куче и передавать в create_main_line для сглаживания

Но так как скрипт запускается для нескольких роликов, хотелось бы кеш сбрасывать

Как правельнее это собрать? можно с классом

Спасибо

Mobile Python » kivy взаимодействие с другими приложениями » Дек. 18, 2016 07:59:36

Привет формучанам. Вопрос из разряда, как реализовать и куда копать?
Цель сделать приложение android и добавить функцию входа в gmail, именно через официальное гугловское приложение, а не стучать прямо на гугл. Интересует именно то, как можно наладить между ними связь. Не прошу прямого решения, лишь совета, что посмотреть и почитать на эту тему. Хотя от примеров не откажусь. Заранее спасибо)

Python для новичков » Помогите, пожалуйста со scrapy - не получается пройти авторизацию » Дек. 18, 2016 01:10:09

Добрый день.
Пытаюсь запустить скрипт, который, по задумке, должен пройти авторизацию и спарсить материалы с сайта.
Я такие скрипты (а с авторизацией) никогда не делал, и слабо понимаю механизм. Воспользовался примером с https://doc.scrapy.org/en/latest/topics/logging.html
Но что-то пошло не так:
 #! coding: utf-8
__author__ = 'iam'
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.item import Item, Field
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import TakeFirst
from scrapy.http import Request, FormRequest
from scrapy import Selector
#
class ScrapyTestItem(Item):
    title = Field()
    url = Field()
class Test03Loader(XPathItemLoader):
    default_output_processor = TakeFirst()
class ScrapyTestSpider(CrawlSpider):
    name = "cr01"
    allowed_domains = ["ecom.elko.ru"]
    start_urls = ["https://ecom.elko.ru/Account/Login",
                  "https://ecom.elko.ru/Catalog/Category/SCO"
                  ]
    rules = (
        Rule(LinkExtractor(
            allow=('https://ecom.elko.ru/Catalog/Product/')),
             callback='parse_item', follow=False),
    )
    def parse(self, response):
        return [FormRequest.from_response(response,
                    formdata={'username': 'tiscom6', 'password': '6307860'},
                    callback=self.after_login)]
    def after_login(self, response):
        # check login succeed before going on
        if "authentication failed" in response.body:
            self.log("Login failed", level=log.ERROR)
            return
    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        l = Test03Loader(ScrapyTestItem(), hxs)
        l.add_xpath('title', "//h1/text()")
        l.add_value('url', response.url)
        return l.load_item()

а парсинг не получается:

 2016-12-17 23:46:21 [scrapy] INFO: Spider opened
2016-12-17 23:46:21 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 i
tems (at 0 items/min)
2016-12-17 23:46:21 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-12-17 23:46:21 [scrapy] DEBUG: Redirecting (302) to <GET https://ecom.elko.
ru/Account/Login?ReturnUrl=%2fCatalog%2fCategory%2fSCO> from <GET https://ecom.e
lko.ru/Catalog/Category/SCO>
2016-12-17 23:46:21 [scrapy] DEBUG: Crawled (200) <GET https://ecom.elko.ru/Acco
unt/Login> (referer: None)
2016-12-17 23:46:21 [scrapy] DEBUG: Crawled (200) <GET https://ecom.elko.ru/Acco
unt/Login?ReturnUrl=%2fCatalog%2fCategory%2fSCO> (referer: None)
2016-12-17 23:46:21 [scrapy] DEBUG: Crawled (200) <POST https://ecom.elko.ru/Acc
ount/Login> (referer: https://ecom.elko.ru/Account/Login)
2016-12-17 23:46:22 [scrapy] DEBUG: Crawled (200) <POST https://ecom.elko.ru/Acc
ount/Login?ReturnUrl=%2fCatalog%2fCategory%2fSCO> (referer: https://ecom.elko.ru
/Account/Login?ReturnUrl=%2fCatalog%2fCategory%2fSCO)
2016-12-17 23:46:22 [scrapy] INFO: Closing spider (finished)
2016-12-17 23:46:22 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 2365,
 'downloader/request_count': 5,
 'downloader/request_method_count/GET': 3,
 'downloader/request_method_count/POST': 2,
 'downloader/response_bytes': 19527,
 'downloader/response_count': 5,
 'downloader/response_status_count/200': 4,
 'downloader/response_status_count/302': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2016, 12, 17, 20, 46, 22, 105000),
 'log_count/DEBUG': 6,
 'log_count/INFO': 7,
 'request_depth_max': 1,
 'response_received_count': 4,
 'scheduler/dequeued': 5,
 'scheduler/dequeued/memory': 5,
 'scheduler/enqueued': 5,
 'scheduler/enqueued/memory': 5,
 'start_time': datetime.datetime(2016, 12, 17, 20, 46, 21, 433000)}
2016-12-17 23:46:22 [scrapy] INFO: Spider closed (finished)