PDA

Просмотр полной версии : [Python] вопрос/ответ.


Страницы : 1 2 [3]

login999
03.01.2010, 18:12
Я только начал учить питон, так что если люди, которые смогут помогать, подсказывать? Если чего напишите аську.
Бегу-бегу, с ног сбиваюсь.

jasd
04.01.2010, 00:52
вот у меня вопрос.
версии интерпретатора 2 и 3, у них синтаксис одинаковый?
нашел книгу "Язык программирования Python" Д.С. Откидач, Г.Россум, Дж.Дрейк,
в ней пишет что : "в книге описаны наиболее распостраненные версии Python от 1.5 до 2.0", но у меня интерпретатор 3.0(подумал что самый актуальный и скачал его).
так можно ли работать с интерпретатором версии 3.0, изучая данную книгу?
мб посоветуйте другую книгу.
P.S. я только начинаю програмировать)

rushter
04.01.2010, 00:59
вот у меня вопрос.
версии интерпретатора 2 и 3, у них синтаксис одинаковый?
нашел книгу "Язык программирования Python" Д.С. Откидач, Г.Россум, Дж.Дрейк,
в ней пишет что : "в книге описаны наиболее распостраненные версии Python от 1.5 до 2.0", но у меня интерпретатор 3.0(подумал что самый актуальный и скачал его).
так можно ли работать с интерпретатором версии 3.0, изучая данную книгу?
мб посоветуйте другую книгу.
P.S. я только начинаю програмировать)
Лучше пока сидеть на 2.x,на 3 мало что перенесено.
Книгу посоветую "изучаем python 3-е издание".
Rushter На просторах интернета встречал модуль для этих дел назывался вроде Universal Encoding.
Или для чего тебе это нужно? может проще в юникод а потом в ту которую надо?

Вопросик: Что лучше почитать про джанго (Django) начиная с его азов?
Чтобы в юникод сконвертить надо знать какая кодировка у файла на входе.

Запрос у юзера - самый нормальный вариант.
Вообще не вариант,заюзал chardet.Всёравно юзерам в виде exe даю :)Определяет быстро,то что надо.
Нашёл интересное решение в виде регулярки,но к сожалению не всегда правильно определяет, пришлось использовать доп модуль.

jasd
04.01.2010, 01:15
спс! скажите мб кто то видел сборник статей для питона?

login999
04.01.2010, 10:06
спс! скажите мб кто то видел сборник статей для питона?
pyplanet.ru

login999
04.01.2010, 10:10
Вообще не вариант,заюзал chardet.Всёравно юзерам в виде exe даю :)Определяет быстро,то что надо.
Нашёл интересное решение в виде регулярки,но к сожалению не всегда правильно определяет, пришлось использовать доп модуль.
Ну я вот по жизни использую запрос у юзера - проблем никаких никогда не возникает. Данные в конфиг себе забиваются, потом из него считываются, да и все :) Норм юзер всегда знает, какая у него кодировка :) Да и выбирать там особо не из чего - UTF-8 или cp1251

jasd
04.01.2010, 14:38
еще есть вопрос: что такое django?

Forcer
04.01.2010, 14:47
еще есть вопрос: что такое django?
фреймворк для построения веб-приложений на python'e

rushter
04.01.2010, 18:30
Ну я вот по жизни использую запрос у юзера - проблем никаких никогда не возникает. Данные в конфиг себе забиваются, потом из него считываются, да и все :) Норм юзер всегда знает, какая у него кодировка :) Да и выбирать там особо не из чего - UTF-8 или cp1251
А ты думаешь юзеру в кайф указывать кодировку 15 файлам,или держать эти 15 файлов только в 1 кодировке ? :)

login999
04.01.2010, 19:01
А ты думаешь юзеру в кайф указывать кодировку 15 файлам,или держать эти 15 файлов только в 1 кодировке ? :)
Насчет указания кодировки 15 файлам - это да.
А вот насчет 15 файлов в разных кодировках, то я такого изврата еще не видел. Не вижу смысла практического использования даже.

InFlame
05.01.2010, 15:34
Код на Пёрле:
my $per = pack('V', 0x71AB9372);
Как сделать аналогично на Питоне?

login999
05.01.2010, 15:38
import struct

per = struct.pack("<L", 0x71AB9372)

Дальше в зависимости от того что и как там нужно.
Смотри справку по модулю struct

upd. Кажется так (аналог "V" для PERL, если я не ошибаюсь)

Ice_VeNOm
08.01.2010, 14:47
def bash():
res = urllib.request.urlopen('http://bash.org.ru/random')
res= str(res.read())
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251'))


AttributeError: 'str' object has no attribute 'decode'

Как сделать, чтобы выводил русский текст?

python v. 3.1

login999
08.01.2010, 15:03
def bash():
res = urllib.request.urlopen('http://bash.org.ru/random')
res= str(res.read())
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251'))




Как сделать, чтобы выводил русский текст?

python v. 3.1
В 3.1. по-другому нужно
попробуй так.

res = urllib.request.urlopen('http://bash.org.ru/random')
res= res.read()
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251').encode("cp866"))

Ice_VeNOm
08.01.2010, 15:08
Таже самая ошибка

login999
08.01.2010, 15:12
res = urllib.request.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.encode("cp866"))

А так ?
П.С. Винда ?

rushter
08.01.2010, 16:02
Я делаю так:

# -*- coding: UTF-8 -*-
text = "Текст"
print(text)

Храню текст не в юникоде.Ещё бывает помогает
print text.decode("utf-8","ignore")
Бред,но пока не подводил :)
В твоём случае можно сделать вот так:
# -*- coding: UTF-8 -*-
import re,urllib
res = urllib.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(str(x))
Проверил на 2.6,работает.Все эти способы бредовые,но нормальных я не нашёл.

login999
08.01.2010, 16:11
Я делаю так:

Бред,но пока не подводил :)
Там в 3.1 меня напрягает этот bytes тип данных. Мне, как привыкшему к 2.6 сложно выкупить там все эти хитросплетения. Фактически, у bytes есть возможность сделать только .decode(), после которого они превращаются в str в кодировке UTF-8, обьекты типа str можно только encode() в bytes кодировки, указанной при вызове encode(). Т.е после .decode получаем str с возможностью вызова только .encode(), а после encode() получаем bytes с возможностью вызова исключительно .decode() для получения str.
Какая-то блин слишком strict работа с кодировками ИМХО.
Я привык к типу данных unicode в 2.6 который мне уже кажется очень простым и гибким при работе с кодировками.
Хотя я конечно, в экстазе от:

import sys

def жаба():
print "Я квакаю".encode(sys.getdefaultencoding())

Судя по отсутствию комментов к этому посту скорее всего все подумали "Какого хрена он это написал???"
Обьясню код от rushter с точки зрения Python 3.1 и Python 2.6:

# -*- coding: UTF-8 -*-

import re,urllib

res = urllib.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')#Вот здесь вот с точки зрения Python2.6 Идет: .read() - чтение данных, которые имеют тип str(некая абстрактная строка в неизвестной кодировке(для python)),потом идёт перевод этой строки в тип unicode(это для Python едино и понятно). С точки зрения Python3.1 здесь при .read() идёт чтение в этот новый тип bytes, которые представляют собой "просто байты", работать с этим типом как со строковыми данными нельзя, для этого необходимо сделать .decode() из кодировки этих байтов, в результате чего они преображаются в тип str, который являет собой строку в кодировке UTF-8 (фактически, насколько я понял, str - это тот же unicode, просто что все четко прописано)
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(str(x))#Вот здесь идет вывод собранных данных в консоль, вот здесь то меня и напрягает то, что на печать все пошло нормально, либо Python автоматически переводит весь вывод в кодировку терминала, либо у Ice_VeNOm кодировка терминала - UTF-8. И вот такое преображение в str()оно здесь не нужно нафик (по идее)

Хз короче, путаница одна с этим Python 3.1. Мб кто из опытных обьяснит, что там с этим bytes и str, ато я вроде и понимаю что они это типа аналог unicode из 2.6, и все равно как-то стремно их воспронимать так же =\

Ice_VeNOm
08.01.2010, 17:43
rushter, Спасибо

Vaal
08.01.2010, 21:03
есть скрипт, парсер лог файла, после парсинга данные заносятся в базу
попытался скомпилировать в exe, после запуска ехешника получил ошибку
попробовал скомпилировать простейший скрипт print "Hello World!" - все нормально ехешник работает
попробовал добавить первые строки кода парсера
import re
import time
import os
import MySQLdb

получил ошибку

D:\Python!\PARSER\dist>hello.exe
Traceback (most recent call last):
File "hello.py", line 4, in <module>
File "MySQLdb\__init__.pyc", line 19, in <module>
File "_mysql.pyc", line 12, in <module>
File "_mysql.pyc", line 10, in __load
ImportError: DLL load failed: =х эрщфхэ єърчрээvщ ьюфєы№.

как решить эту проблему с mysqldb?

login999
08.01.2010, 21:20
есть скрипт, парсер лог файла, после парсинга данные заносятся в базу
попытался скомпилировать в exe, после запуска ехешника получил ошибку
попробовал скомпилировать простейший скрипт print "Hello World!" - все нормально ехешник работает
попробовал добавить первые строки кода парсера
import re
import time
import os
import MySQLdb

получил ошибку

D:\Python!\PARSER\dist>hello.exe
Traceback (most recent call last):
File "hello.py", line 4, in <module>
File "MySQLdb\__init__.pyc", line 19, in <module>
File "_mysql.pyc", line 12, in <module>
File "_mysql.pyc", line 10, in __load
ImportError: DLL load failed: =х эрщфхэ єърчрээvщ ьюфєы№.

как решить эту проблему с mysqldb?
Посмотри какие там есть DLL-ки и закинь их в c:\python\dll
P.S. Рекомендую GUI2exe - это написанный на wxpython Гуи-интерфейс для "Собиралок" в экзе

Vaal
08.01.2010, 22:20
по совету с другого форума уже посмотрел с помощью depends каких длл не хватает и прописал их в setup.py

все заработало
но есть еще один вопрос, запускаю ехе через командную строку
вначале идет такая строка
D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated

что то про устаревший модуль, стоит разбираться с этим или ничего страшного?

login999
08.01.2010, 23:23
по совету с другого форума уже посмотрел с помощью depends каких длл не хватает и прописал их в setup.py

все заработало
но есть еще один вопрос, запускаю ехе через командную строку
вначале идет такая строка
D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated

что то про устаревший модуль, стоит разбираться с этим или ничего страшного?
Ничего страшного, это простой ворнинг, не более того. это информация на заметку скорее для разработчиков py2exe, чем для тех кто им пользуется :)

Vaal
12.01.2010, 05:12
на ХР все работает без проблем
попробовал на винсервер 2003
программа зависает и через секунд 10 закрывается без ошибок
проверил длл - не хватало msjava.dll и msvcr90.dll
добавил, попробовал снова запустить - все равно зависает

поставил туда питон
запускаю скрипт
зависает на этой строке
db = MySQLdb.connection(host="localhost", user="root", passwd="", db="test")
висит 5-10 секунд, потом и редактор и шелл закрываются без ошибки

в чем может быть проблема?

login999
12.01.2010, 10:09
на ХР все работает без проблем
попробовал на винсервер 2003
программа зависает и через секунд 10 закрывается без ошибок
проверил длл - не хватало msjava.dll и msvcr90.dll
добавил, попробовал снова запустить - все равно зависает

поставил туда питон
запускаю скрипт
зависает на этой строке
db = MySQLdb.connection(host="localhost", user="root", passwd="", db="test")
висит 5-10 секунд, потом и редактор и шелл закрываются без ошибки

в чем может быть проблема?
Смахивает на то, что по таймауту рвет соединения. А мускул крутится ?
P.S. Попробуй через командную строку запустить. Мб фаер режет.

Vaal
12.01.2010, 16:08
через командную строку вроде пустило
D:\webserver\MySQL Server 5.1\bin>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.39-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
мускул работает нормально т.е. скрипт на пхп из мускула данные забирают без проблем

login999
12.01.2010, 20:13
через командную строку вроде пустило
D:\webserver\MySQL Server 5.1\bin>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.39-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
мускул работает нормально т.е. скрипт на пхп из мускула данные забирают без проблем
Я имею ввиду мб фаер режет саму твою екзеху.
Попробуй запустить именно собранную тобой exe через консоль. Там тебе должно показать трейсбек (естественно, только в том случае, если на критической секции ошибка не убивается простым try: except что чревато "безмолвным"слетанием).Просто даже если там ошибка какая-то то не факт что ты ее увидишь - окно слишком быстро закрывается.

Vaal
12.01.2010, 20:44
через командую строку тоже самое
никакой ошибки

try: except в том куске кода нет

и фаера тоже не стоит там...

gold-goblin
12.01.2010, 21:04
мускул на какой оси крутится?
Посмтри конектица питон или нет.

Vaal
12.01.2010, 22:34
win server 2003
как посмотреть?

TikTik
12.01.2010, 23:27
import sys
import string

if len(sys.argv)<2:
print "Usage: leap.py year, year, year."

sys.exit(0)

for i in sys.argvj[:]:
try:
y=string.atoi(i)

except:

print i,"is not a year."

continue

leap="no"

if y%400==0:

leap="yes"

elif y*100==0:

leap="no"

elif y%4==0:

leap="yes"

else:

leap="no"


print y, "leap:", leap, "in the Gregorian calendar"


if y%4==0:

leap="yes"

else:

leap="no"


print y, "leap:", leap, "in the Julian calendar"

print "Calculated leapness for", len { sys.argv ) - 1, "years"
Посмотрите пожалуйста что не так с Кодом :(

[Life]
12.01.2010, 23:33
Кто знает... ?


Код:

...
gamma_N=round(float(gamma_0**2),8)
#print '%F' %(gamma_N)
i=i+1
ls=str(gamma_N)
ls=ls[2:9]
ls='0.'+ls
print '%F' %(float(ls))
lch=round(float(ls)**2,8)
gamma_0=lch
print ''
...

Это часть метода серединных квадратов... проблема в том, что после получения среза строки, необходимо преобразовать строку во флоат, но как выяснилось переменная получает число в экспоненциальном виде: 0.5e+006 , что нить такое.. ну и следовательно не получается перегнать во флоат.. Как избежать такой формы записи?! надо чтоб было 0.0000005 например, без всяких e....

gold-goblin
13.01.2010, 01:30
win server 2003
как посмотреть?
в консоле мускул сервера набрать команду хммм если честно не помню =)
попробуйте поискать в интернете или сделать вот что: после завершения скрипта в консоле мускула введите mysql_error это пакежет последнюю ошибку (тоесть ошибку подключения вашего клиента)

gold-goblin
13.01.2010, 01:35
экспоненциальном виде: 0.5e+006 , что нить такое.. ну и следовательно не получается перегнать во флоат.. Как избежать такой формы записи?! надо чтоб было 0.0000005 например, без всяких e....
если память не подводит то перед преобразованием надо использовать функцию abs()

gold-goblin
18.01.2010, 17:51
Помогите с регулярками плиз =)
Блин что-то я их не понимал и понять не могу =(
Помогите составит регулярку чтоб выдрать строку вида: http://****.ru или http://***.***.ru Буду благодарен =)

login999
18.01.2010, 18:29
Помогите с регулярками плиз =)
Блин что-то я их не понимал и понять не могу =(
Помогите составит регулярку чтоб выдрать строку вида: http://****.ru или http://***.***.ru Буду благодарен =)


import re

data = "http://vasya.ru ,http://super.vasya.ru"
links_1 = re.findall(r'''(http\:\/\/.*?\.ru)''', data)
links_2 = re.findall(r'''(http\:\/\/.*?\..*?\.ru)''', data)
links_3 = re.findall(r'''(http\:\/\/.*?\.ru)|(http\:\/\/.*?\..*?\.ru)''', data)

print links_1
print links_2
print links_3



Правда не совсем то

Vaal
20.01.2010, 00:40
по регуляркам вот тут хорошая статьи
http://www.intuit.ru/department/pl/python/6/5.html
там есть скрипт дебаг регулярных выражений



тут такой вопрос возник
как перезапустить скрипт? т.е. не стартануть его "копию" после завершения
а именно чтобы программа начала выполняться сначала


update
нашел вроде бы простое решение
сделать бесконечный цикл
while True:

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

gold-goblin
20.01.2010, 14:24
Бесконечный цикл самое надежное решение (ИМХО).
Подводных камней быть не должно. Могут возникнуть проблемы с потоками (если ты их используешь) при условии что 1 из потоков не завершится (со временем их станет очень много.)

login999
20.01.2010, 20:23
по регуляркам вот тут хорошая статьи
http://www.intuit.ru/department/pl/python/6/5.html
там есть скрипт дебаг регулярных выражений



тут такой вопрос возник
как перезапустить скрипт? т.е. не стартануть его "копию" после завершения
а именно чтобы программа начала выполняться сначала


update
нашел вроде бы простое решение
сделать бесконечный цикл
while True:

какие подводные камни могут всплыть?
Для дебага регулярок есть Kodos.
Относительно бесконечной работы - всё зависит от того, что ты хочешь именно, но обычно while True хватает за глаза.

login999
21.01.2010, 01:12
Vaal,
через рекурсию
Враки.

#! /usr/bin/env python
#-*-encoding:UTF-8-*-

import sys
print u"Ваша функция может выполниться максимум {0} раз".format(sys.getrecursionlimit())

Vaal
22.01.2010, 01:22
ну пока вроде цикл работает без проблем

такой еще вопрос
читается лог
with open(path2mislog, 'r') as f:
logfile = f.readlines()
f.closed
logfile = list(set(logfile))
logfile = sorted(logfile)
из него удаляются одинаковые строки
после чего слетает сортировка по времени
сортирую
но события которые происходят в одно и тоже время не всегда встают на места

это можно как то исправить?

login999
23.01.2010, 22:51
ну пока вроде цикл работает без проблем

такой еще вопрос
читается лог
with open(path2mislog, 'r') as f:
logfile = f.readlines()
f.closed
logfile = list(set(logfile))
logfile = sorted(logfile)
из него удаляются одинаковые строки
после чего слетает сортировка по времени
сортирую
но события которые происходят в одно и тоже время не всегда встают на места

это можно как то исправить?

Лично я - хз как, я бы удаление дублей делал бы в таком случае не так - создавал бы два массива, а потом циклом гонял бы по одному и вставлял в другой массив - тогда должен сохраниться порядок

daniel_1024
23.01.2010, 23:34
есть скрипт парсинга гугла по определенному запросу и запись результатов в текстовик:
#!usr/bin/env python3
dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
page = 10
reg = 'class=r»«a href="([^"&]*)'
print "# start"
print "# dork:" + dork
print "# all page: " + str(page)
fo = open('google.txt','w')
print "# google.txt open"
import curl
import time
import re
for i in xrange(0,page):
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
rez = curl.url_get(url)
rez = re.findall(reg,rez)
for item in rez:
fo.write(item+"\n")
print "# page "+str(i+1)+" done"
time.sleep(2)
fo.close
print '# all done'

он не работает...в чем ошибка ?
ругается на строку
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)

login999
24.01.2010, 01:40
есть скрипт парсинга гугла по определенному запросу и запись результатов в текстовик:
#!usr/bin/env python3
dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
page = 10
reg = 'class=r»«a href="([^"&]*)'
print "# start"
print "# dork:" + dork
print "# all page: " + str(page)
fo = open('google.txt','w')
print "# google.txt open"
import curl
import time
import re
for i in xrange(0,page):
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
rez = curl.url_get(url)
rez = re.findall(reg,rez)
for item in rez:
fo.write(item+"\n")
print "# page "+str(i+1)+" done"
time.sleep(2)
fo.close
print '# all done'

он не работает...в чем ошибка ?
ругается на строку
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
Наверное потому что ты забил на отступы.
До тех пор пока будешь Python-код подсвечивать как PHP-код, то у тебя ни один из скриптов работать и не будет.

Vaal
24.01.2010, 18:59
Лично я - хз как, я бы удаление дублей делал бы в таком случае не так - создавал бы два массива, а потом циклом гонял бы по одному и вставлял в другой массив - тогда должен сохраниться порядок
кажется то что нужно?
http://stackoverflow.com/questions/1801459/algorithm-how-to-delete-duplicate-elements-in-a-list-efficiently/1801471#1801471

login999
24.01.2010, 21:25
кажется то что нужно?
http://stackoverflow.com/questions/1801459/algorithm-how-to-delete-duplicate-elements-in-a-list-efficiently/1801471#1801471
Ну хз, я там вижу большинство кода на других ЯП :)
Для питона основное решение там - это то, что я предлагал.
Моё решение :

def remove_dupies(lst):
sorted_lst = []
for x in lst:
if x not in sorted_lst:
sorted_lst.append(x)
return sorted_lst

with open(path2mislog, 'r') as f:
logfile = f.readlines()
f.closed
logfile = remove_dupies(logfile)
logfile = sorted(logfile)

Никакой оригинальности/производительности. Тривиальное решение, которое подхавает оперативки в двухкратном размере файла. Если нужно что-то покруче, то хз придется изьёбываться :)

CyberHunter
24.01.2010, 22:05
есть скрипт парсинга гугла по определенному запросу и запись результатов в текстовик:
#!usr/bin/env python3
dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
page = 10
reg = 'class=r»«a href="([^"&]*)'
print "# start"
print "# dork:" + dork
print "# all page: " + str(page)
fo = open('google.txt','w')
print "# google.txt open"
import curl
import time
import re
for i in xrange(0,page):
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
rez = curl.url_get(url)
rez = re.findall(reg,rez)
for item in rez:
fo.write(item+"\n")
print "# page "+str(i+1)+" done"
time.sleep(2)
fo.close
print '# all done'

он не работает...в чем ошибка ?
ругается на строку
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)

Скажите как изменить чтобы работал? Как раз нужен подобный скрипт :)

login999
25.01.2010, 10:22
Скажите как изменить чтобы работал? Как раз нужен подобный скрипт :)
Эмм, если честно, то я не уверен что он вам подойдёт, если обратите внимание на то, что он требует pyCURL и знание питоновских регулярок...
Лучше уж пропросите чтоб Вам его переписали под стандартную библиотеку...
Но на всякий случай :

#!usr/bin/env python3
import re
import curl
import time
dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
page = 10
reg = 'class=r»«a href="([^"&]*)'
print "# start"
print "# dork:" + dork
print "# all page: " + str(page)
fo = open('google.txt','w')
print "# google.txt open"
for i in xrange(0,page):
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
rez = curl.url_get(url)
rez = re.findall(reg,rez)
for item in rez:
fo.write(item+"\n")
print "# page "+str(i+1)+" done"
time.sleep(2)
fo.close
print '# all done'

P.S. pyCURL под рукой нету чтобы проверить, но должно работать.

daniel_1024
25.01.2010, 21:49
login999 подскажи пожалуйста что надо с pyCURL делать ? как подключить ? скачал я из инета набор файлов отсюда (http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz) , что дальше?! :)

gold-goblin
26.01.2010, 01:34
он не работает...в чем ошибка ?
Так же гугл отбрасывает сторонние юсерагенты.
login999 подскажи пожалуйста что надо с pyCURL делать ? как подключить ? скачал я из инета набор файлов отсюда , что дальше?!
Гугл в помощь =) Какая версия питона? а так http://python.su/forum/viewtopic.php?id=3985

login999
26.01.2010, 03:34
Вот експлоит на питоне, как его запустить на денвере, ось Win!!!
http://www.securitylab.ru/poc/extra/389859.php
не работает, хочу проверить ...

Кому не сложно помогите!!!

Експлоит поидеи через ошибку в интернет испортил (IE6,IE7) выполняет произвольный код!!! (там поидеи калькулятор запуститься должен)
Уважаемый, учите матчасть :)
Тот сплойт что на секлабе запускает собственный веб-сервер.
Код не смотрел, так что по этому поводу не скажу ничего.
Ставишь питон с python.org.
Потом тупо запускаешь скрипт(двойной щелчок) должно запуститься консольное окошко.
После этого заходишь через браузер на локалхост.
Дальше, я думаю, все понятно :)

login999
26.01.2010, 03:38
login999 подскажи пожалуйста что надо с pyCURL делать ? как подключить ? скачал я из инета набор файлов отсюда (http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz) , что дальше?! :)
По поводу pyCURL то насколько я помню, официально под вынь не поддерживается. Недавно, кстати товарищ поднимал этот вопрос на ачате (не помню уже кто). Так что установка pyCURL под вынь - занятное и нетривиальное дело :).
Короче, не хотелось бы обсырать чужой код, но приведенный выше "парсер" - это кусок гуано, причем самого мерзкого пошиба. Я тебе такой за полторы минуты нацарапаю. Если проснусь завтра с у тра (или уже сегодня =\) - то выделю десять минут и нацарапаю какашку по типу той что приведена выше, но без pyCURL...

login999
27.01.2010, 10:28
#!/usr/bin/env python
#-*-encoding:UTF-8-*-

import re
import urllib2
import time

HEADERS = {
"User-Agent" : "Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1",
"Accept" : "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1",
"Accept-Language" : "ru,uk-UA;q=0.9,uk;q=0.8,en;q=0.7",
"Accept-Charset" : "iso-8859-1, utf-8, utf-16, *;q=0.1",
"Accept-Encoding" : "identity, *;q=0",
"Connection" : "Keep-Alive"
}


def curl_url_get(url):
request = urllib2.Request(url, headers=HEADERS)
data = urllib2.urlopen(request).read()
return data

dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
page = 10
reg = 'class=r»«a href="([^"&]*)'
print "# start"
print "# dork:" + dork
print "# all page: " + str(page)
fo = open('google.txt','w')
print "# google.txt open"
for i in xrange(0,page):
url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
rez = curl_url_get(url)
rez = re.findall(reg,rez)
for item in rez:
fo.write(item+"\n")
print "# page "+str(i+1)+" done"
time.sleep(2)
fo.close
print '# all done'


Кому там нужен типа гуглопарсер.
Из того парсера просто убрал pyCURL, не более того.
То что он ничего не находит это не значит, что я там чего-то накосячил.
Регулярка там кривая нах =\.
P.S. Под Python 2.6

Solker
27.01.2010, 12:33
login999

https://forum.antichat.ru/showthread.php?p=1838949#post1838949

http://docs.python.org/library/json.html

taxpayer
27.01.2010, 21:14
daniel_1024:

http://python.org/download/releases/2.5.4
http://pycurl.sourceforge.net/download/pycurl-ssl-7.18.2.win32-py2.5.exe

Инсталлеры с офф паг, не со сторонних ресурсов

Чесно говоря, не вижу смысла использовать для доркера пикурл, если в задачу не входит использование соксов, вполне хватит стандартных либ

login999
27.01.2010, 21:40
py2.5
...

CyberHunter
27.01.2010, 22:01
Скажите что случилось? Раньше все программы мог запустить, а сейчас - в консоли пишу все как раньше, пишет неверный путь. Путь введен верно 100%. В чем может быть проблема? Переустановил интерпретатор в стандартную директорию, не помогло. Хз что случилось...

login999
27.01.2010, 23:26
Скажите что случилось? Раньше все программы мог запустить, а сейчас - в консоли пишу все как раньше, пишет неверный путь. Путь введен верно 100%. В чем может быть проблема? Переустановил интерпретатор в стандартную директорию, не помогло. Хз что случилось...
Скриншот/трейсбек ф студию :)

gold-goblin
28.01.2010, 22:03
Скриншот/трейсбек ф студию :)
+5 и с новой авой =)

CyberHunter
30.01.2010, 16:59
Скриншот/трейсбек ф студию
Уже все пашет)
Вот другой вопрос:
Есть код типа:
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")

как сделать так чтобы при каждом запуске надо вводить значение х?

login999
30.01.2010, 18:39
x = input()
Бить по рукам за input()
Нужно юзать raw_input().
Это в тройке только сделали input = raw_input()
При input() выражение прогоняется через eval() что есть некошерно. Естественно, это не относится к тройке.
П.С. Читайте учебник - там всё это есть...

043nKRuT0y
30.01.2010, 19:28
Всем привет ! Пробовал я потестить Google App Engine - поставил я SDK - установка прошла нормально , но вот создал я значит простое приложение , пишу в консоле
dev_appserver.py testpr
- и обламываюсь , никакой сервер не стартует, пытаясь потом запустить приложение через иконку получаю в ответ
See the logfile 'C:\Program Files\Google_appengine\launcher\GoogleAppEngineLau ncher.exe.log' for details

Как решить проблему , и как собственно заставить данный тестовый сервер работать !?

razb
30.01.2010, 19:32
В лог файл не судьба посмотреть в чем причина проблемы?

CyberHunter
30.01.2010, 20:03
П.С. Читайте учебник - там всё это есть...
Читал, но не понял!
Вот вопрос:
Какой должен быть код?

x = raw_input()
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")

Так не пашет.
А если :
x = input("X=")
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")


то появляется "х=", ввожу число, и ошибка. Как я понял нужно ввести тип данных, но когда ввожу itn("x"), не пашет. Напишите всю прогу если не трудно.

login999
30.01.2010, 20:23
Вот именно что читал, но в исходном коде не мог найти это.
Почитай на википедии учебник - он информативнее :)

login999
30.01.2010, 20:35
x = int(raw_input())
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")

У питона динамическая строгая типизация в отличие от пхп, где динамическая слабая типизация. Поэтому сравнивать тип инт и тип стр это плохая идея...

CyberHunter
30.01.2010, 20:48
Поэтому сравнивать тип инт и тип стр это плохая идея...
Хм... В книге которую я читаю их постоянно сравнивают.

login999
30.01.2010, 20:51
Хм... В книге которую я читаю их постоянно сравнивают.
Если в этой книге использется input() то тогда это возможно, так как после eval() полученные данные из "5" превращаются в 5.

CyberHunter
30.01.2010, 20:56
login999
Скажи как сделать raw_input оператором(или как сказать?)
Знаю для этого есть def, но еще не знаю как им пользоваться.
Потому что при
x = int(raw_input())
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")

Ошибка!

"NameError: name 'raw_input' is not defined"

login999
30.01.2010, 20:58
login999
Скажи как сделать raw_input оператором(или как сказать?)
Знаю для этого есть def, но еще не знаю как им пользоваться.
Потому что при
x = int(raw_input())
if x == 5:
print("asdf"),
elif x<5:
print("asddddf"),
elif x>5:
print("aaaaaa")

Ошибка!

"NameError: name 'raw_input' is not defined"
Оба-на :) А питон то 3 ветки :)
Тут raw_input() скрыт за input()
так что замена первой строчки на такую x = int(input()) тебя спасает...
П.С. На будущее - я сам пишу на 2.6 версии, поэтому рассматриваю в первую очередь варианты для нее. На 2.5 я не писал никогда, а с тройкой имел негативный опыт, после которого и вернулся на двойку. Поэтому просьба на будущее всем кто прочтет это сообщение - когда задаете вопрос, то пожалуйста указывайте полную версю питона, которая у вас установлена.

CyberHunter
30.01.2010, 23:30
login999
Спс! За помощь!
Скажи а почему ты:
с тройкой имел негативный опыт
???

login999
31.01.2010, 14:34
login999
Спс! За помощь!
Скажи а почему ты:

???
Были проблемы с запуском того что я напейсал. Не отрабатывало оно так как нужно, а конкретно то гуй на ттк (пиздец, мне пришлось с нуля переписывать софт с тройки на двойку да еще и впридачу раздупляться с wxpython для того чтоб сделать нормальный гуй!). Хотя, если честно, я сейчас склоняюсь к тому мнению, что это были какие-то траблы именно у заказчика на конкретно его тачке...

Fata1ex
31.01.2010, 21:19
login999, жжёшь :) ты что не видел, что в его коде print - функция?

login999
01.02.2010, 00:41
login999, жжёшь :) ты что не видел, что в его коде print - функция?
Я так принтил на 2.6 когда пытался себя к этому приучить. Ты попробуй ^.^
P.S. Хотя ты и прав, я этот момент упустил :)

daniel_1024
03.02.2010, 20:51
никто не знает если парсить ссылки с гугла через api (ajax.googleapis.com) будет капча вылезать ? есть ли там какой-либо лимит по запросам с одного айпи или можно парсить вообще до бесконечности ?!)

gold-goblin
03.02.2010, 20:53
никто не знает если парсить ссылки с гугла через api (ajax.googleapis.com) будет капча вылезать ? есть ли там какой-либо лимит по запросам с одного айпи или можно парсить вообще до бесконечности ?!)
Как этот вопрос относится к питону? Или тебе накатать скрипт который это проверит?

login999
04.02.2010, 00:54
никто не знает если парсить ссылки с гугла через api (ajax.googleapis.com) будет капча вылезать ? есть ли там какой-либо лимит по запросам с одного айпи или можно парсить вообще до бесконечности ?!)
капча не лезет, но лимит есть. Особо там не попарсишь.

Дикс
06.02.2010, 20:50
пытаюсь установить curl в питон

делаю примерно так:

Python.exe setup.py install --curl-dir=C:\curl-7.19.7\curl-7.19.7

в curl-dir распакованный свежий курл отсюда: http://curl.haxx.se/download.html

получаю:

Using curl directory: C:\curl-7.19.7\curl-7.19.7
Traceback (most recent call last):
File "setup.py", line 210, in <module>
assert os.path.isfile(o), o
AssertionError: C:\curl-7.19.7\curl-7.19.7\lib\libcurl.lib

rushter
07.02.2010, 00:37
Версия питона какая ?

gold-goblin
07.02.2010, 00:38
и ос какая?

Большой джо
07.02.2010, 02:17
Нужна ваша помощь!

Вообщем только начал изучать питон. На питоне хочу разрабатывать веб приложения. Создаю файл у себя на сервере test.py. Добавляю следующую строку в .htaccess: AddHandler cgi-script .py.
В файл test.py вставляю след. код:

#!/usr/bin/python
print "Content-Type: text/html"
print
print "<html>"
print "<title>python</title>"
print "<body>"
print "<h1>test</h1>"
print "blablabla!"
print "</body>"
print "</html>"

При посещении данного файла в браузере выдаёт 500 ошибку! Лезу в лог файлы, там добавлено две ошибки:
suexec policy violation: see suexec log for more details
Premature end of script headers: test.py
В чём проблема, не пойму!

CPU0
07.02.2010, 02:56
Нужна ваша помощь!

Вообщем только начал изучать питон. На питоне хочу разрабатывать веб приложения. Создаю файл у себя на сервере test.py. Добавляю следующую строку в .htaccess: AddHandler cgi-script .py.
В файл test.py вставляю след. код:

#!/usr/bin/python
print "Content-Type: text/html"
print
print "<html>"
print "<title>python</title>"
print "<body>"
print "<h1>test</h1>"
print "blablabla!"
print "</body>"
print "</html>"

При посещении данного файла в браузере выдаёт 500 ошибку! Лезу в лог файлы, там добавлено две ошибки:
suexec policy violation: see suexec log for more details
Premature end of script headers: test.py
В чём проблема, не пойму!

1) сохрани скрипт в UNIX формате
2) поставь права 755

должно заработать

Дикс
07.02.2010, 09:09
версия питона какая ?
и ос какая?

2.6.4
windows xp

rushter
07.02.2010, 12:29
2.6.4
windows xp
Насколько я помню под 2.6 оф версии нет,да и вообще curl не пользуется популярностью в python.
http://pycurl.sourceforge.net/download/

Большой джо
07.02.2010, 13:27
1) сохрани скрипт в UNIX формате
2) поставь права 755

должно заработать
Права 755 стоят!
В Unix формате, это как?

Дикс
07.02.2010, 14:50
если курл не пользуется популярностью в питоне, то что пользуется?
для отправки http-запросов

Большой джо
в unix-формате, это отдельный тип символов перевода строк
скачай akelpad, он умеет менять тип для windows/mac/linux

"правка - формат новой строки"

Большой джо
07.02.2010, 15:18
если курл не пользуется популярностью в питоне, то что пользуется?
для отправки http-запросов

Большой джо
в unix-формате, это отдельный тип символов перевода строк
скачай akelpad, он умеет менять тип для windows/mac/linux

"правка - формат новой строки"
Во, спасибо большое, всё заработало!!!

[Dezzter]
07.02.2010, 22:37
если курл не пользуется популярностью в питоне, то что пользуется?
PyCurl ?
http://pycurl.sourceforge.net/download/
// кэп

Дикс
07.02.2010, 23:06
PyCurl ?
Цитата:
Сообщение от rushter
http://pycurl.sourceforge.net/download/

// кэп

собственно, скачав и распаковав его (pycurl-7.19.0.tar.gz 09-Sep-2008 17:43 70K)
я и получаю:
http://forum.antichat.ru/showpost.php?p=1881774&postcount=581

ещё качал инсталлятор pycurl-ssl-7.18.2.win32-py2.5.exe
но он при установке выдает что не может найти установленный питон

я ставил в винде PYTHONHOME, PYTHONPATH пути к папке с питоном - бестолку

gold-goblin
07.02.2010, 23:29
Под вин курл не ставил, но слышал что это жопатно.
А использовать лучше что-то из стандартного httplib, urllib, urllib2.

login999
08.02.2010, 10:23
Насколько я помню под 2.6 оф версии нет,да и вообще curl не пользуется популярностью в python.
http://pycurl.sourceforge.net/download/
Ну, у такой категории людей как Дикс то очень даже и пользуется.
Более чем уверен, что ни о чём другом он даже не задумывался.

если курл не пользуется популярностью в питоне, то что пользуется?
для отправки http-запросов

Большой джо
в unix-формате, это отдельный тип символов перевода строк
скачай akelpad, он умеет менять тип для windows/mac/linux

"правка - формат новой строки"
Ну 100%, книжки пишут просто так. Маны это тоже для дуракофф.
http://docs.python.org/modindex.html - Настоятельно рекомендую к прочтению. Потом таких вопросов не будет.
Поддержки соксов "изкаропки" нет. Хочешь соксов без гемора - pyCURL в зубы и downgrade до Python2.5 (Под него есть сборка под Форточки). Хочешь погемориться - socksipy(Но это на уровне сокетов). Самый рульный вариант - это Twisted(если хорошо поискать, то есть модуль для поддержки соксов), но Twisted это асинхронные сокеты, следовательно Излом мозгофф обеспечен.

login999
08.02.2010, 10:25
И не найдёт , ибо py2.5.exe это значит Python2.5, а не Python2.6

CyberHunter
14.02.2010, 17:35
Скажите как это сделать:
Есть текст, нужно написать одну строку и если она есть в тексте то тру и наоборот? Как это сделать?
Читал о сравнении строк, как я понял, то нужно писать типа a = ["текст"]
b = ["строка"]
a == b
так? у меня что-то не получается :( . Интерпретатор 3.0.1.

gold-goblin
16.02.2010, 15:33
Тут появилась не понятка с циклами...
есть цикл:
i = 54
....
.... #тута код
while i < int(len(site)):
Интерпретатор ругается что к переменной i обращаются до ее объявления...

File "C:\boot.py", line 11, in boot
while i < int(len(site)):
UnboundLocalError: local variable 'i' referenced before assignment
В чем трабл?

gold-goblin
16.02.2010, 17:11
Хе проблема решена.
Заключалась в том что переменная i не была объявлена в функции где использовалась.

Fallen Dick
21.02.2010, 22:07
Имеется html код:

<li><a href="http://url/">анкор</a></li>

Нужно как бы анкор спарсить) Всегда получалось, но тут ума дать не могу, ошибки так и сыпятся :(
Ошибка в этой строке:

re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)

Сама ошибка:

Traceback (most recent call last):
File "C:\Python26\ololo.py", line 9, in <module>
re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)
File "C:\Python26\lib\re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer

CyberHunter
21.02.2010, 22:22
Скажите можно ли прогу написанную на питоне преобразовать в ехе-файл?
Т.е. чтобы не запускать каждый раз через смд.

[Dezzter]
21.02.2010, 22:30
py2exe тебе в помощь, сам не юзал, но говорят это полнейший бред)

CyberHunter
21.02.2010, 22:35
py2exe тебе в помощь, сам не юзал, но говорят это полнейший бред)
Почему бред? Кто юзал напишите.

[Dezzter]
21.02.2010, 23:03
Я только, что пробовал.. Вообще элементарный скрипт пробовал скомпилить, с кодировкой шлак получился и второй раз этот же скрипт скомпилил, вообще запускается и окно закрывается!

Вообще поиск тебе в помощь, тему по py2exe уже много раз описывали) Я сам гуглил, инфы не мало видел.. везде по немногу =**

taxpayer
22.02.2010, 06:10
']Я только, что пробовал.. Вообще элементарный скрипт пробовал скомпилить, с кодировкой шлак получился

Может потому что у тебя руки не из того места растут?
#! -*- coding: cp866 -*-
ну или утф-8, но я сильно сомневаюсь, что у тебя никсы

']
и второй раз этот же скрипт скомпилил, вообще запускается и окно закрывается!


Потому что ты два раза щёлкнул на ярлычок консольной программы print 'Hello'?

CyberHunter, всё нормально, пи2ехе не бред, и писали его не долбоёбы. возьми мануальчик, учебничек, зачем тебе собирать здесь абсолютно не несущих информации посты?

[Dezzter], не позорился бы

CyberHunter
22.02.2010, 09:55
taxpayer у меня просто сейчас нет возможности скачать и посмотреть, в ближайшее время сам посмотрю.

Ice_VeNOm
22.02.2010, 11:51
Я вроде адаптировал функцию, но почему то выдает
Traceback (most recent call last): File "C:\Users\VeNOm\Desktop\mypy\vk\vk.py", line 125, in ant s=send_cap('*********************', 'captcha.jpeg') File "C:\Users\VeNOm\Desktop\mypy\vk\vk.py", line 55, in send_cap h.request("POST", "/in.php", body, headers) File "C:\Python31\lib\http\client.py", line 918, in request self._send_request(method, url, body, headers) File "C:\Python31\lib\http\client.py", line 956, in _send_request self.endheaders(body) File "C:\Python31\lib\http\client.py", line 914, in endheaders self._send_output(message_body) File "C:\Python31\lib\http\client.py", line 768, in _send_output self.send(msg) File "C:\Python31\lib\http\client.py", line 716, in send self.connect() File "C:\Python31\lib\http\client.py", line 698, in connect self.timeout) File "C:\Python31\lib\socket.py", line 292, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno 11004] getaddrinfo failed

Сама функция


import urllib.request
import urllib.parse
import re
import codecs
import logging
import http.client
def send_cap(key, fn):
''' Отправляем капчу на anti-capcha.com
Вход:
key - ключ на антикапче
fn - файл с капчей
Выход:
id капчи - в случае успеха
False - неудача
'''
logging.info('--- Send captcha')


data = open(fn, 'rb').read()

# разделитель для данных
boundary= '----------OmNaOmNaOmNamo'

# тело HTTP-запроса
body = '''--%s
Content-Disposition: form-data; name="method"

post
--%s
Content-Disposition: form-data; name="key"

%s
--%s
Content-Disposition: form-data; name="file"; filename="capcha.jpg"
Content-Type: image/pjpeg

%s
--%s--

''' % (boundary, boundary, key, boundary, data, boundary)

# заголовки HTTP-запроса
headers = {'Content-type' : 'multipart/form-data; boundary=%s' % boundary}
# подключение к HTTP-серверу
h = http.client.HTTPConnection('antigate.com')
# посылка запроса
h.request("POST", "/in.php", body, headers)
# получение и анализ ответа HTTP-сервера
resp = h.getresponse()
data = resp.read()
h.close()
if resp.status == 200:
cap_id= int(data.split('|')[1])
return cap_id
else:
logging.error('Captcha not send: %s %s' % (resp.status, resp.reason))
return False

[Dezzter]
22.02.2010, 13:40
Может потому что у тебя руки не из того места растут?
#! -*- coding: cp866 -*-
ну или утф-8, но я сильно сомневаюсь, что у тебя никсы



Потому что ты два раза щёлкнул на ярлычок консольной программы print 'Hello'?

CyberHunter, всё нормально, пи2ехе не бред, и писали его не долбоёбы. возьми мануальчик, учебничек, зачем тебе собирать здесь абсолютно не несущих информации посты?

[Dezzter], не позорился бы


язык в очко засунь! :D

taxpayer
22.02.2010, 15:59
']язык в очко засунь! :D
Сейчас ты показал свои недалёкость и слабоумие. Вместо того, чтобы промолчать и проанализировать своё "авторитетное" мнение, ты брызжешь слюной в монитор, потому что тебя "умыли" с твоими 23 репутации.

[Dezzter]
22.02.2010, 17:46
ахахах, если бы я брызгал слюной в монитор, то не писал бы свой пост с улыбкой на лице.. можешь вздрочнуть на мою репутацию! =** ты явно не равнодушен к этим цифрам)

кст, про пи2ехе это не моё мнение, лол бля, я сказал, что мне сказали несколько людей, более компетентные в этом вопросе, не более того =/

так, что сам умойся камшотом :D

KentPol
24.02.2010, 05:56
Как на питоне реаизовать добавление контакта для смс в mail.ru.
Документация по протоколу здесь: http://agent.mail.ru/ru/developers/protocol.html

-tatarin-
25.02.2010, 15:23
нашел в инете скрипт приглашения в друзья всех членов определенной группы вконтакте, но не знаю как запустить его, помогите пжл! Вот скрипт:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by Nuclear Worm
#
#
# Vkontakte friends adder #
# Version 0.1.a.1
#

import os, sys, time, re, logging, sqlite3, urllib, urllib2, cookielib
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
VERSION='0.1.a.1'
COOKIEFILE = '/tmp/cookies1.lwp'
LOG_FILENAME = '/tmp/dbg.log'
logging.basicConfig(filename=LOG_FILENAME, filemode = 'w', level=logging.DEBUG,)

class PostCommand:
def __init__(self, url, req = None):
self.request = req
self.headers = ''
self.url = url

def perform(self):
cj = cookielib.LWPCookieJar()
if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(c j))
self.res = url_retr.open(self.url, self.request).read()
cj.save(COOKIEFILE)
logging.debug("Got to PostCommand request = %s, url = %s"%(self.request, self.url))
#self.res = urllib.urlopen(self.url, self.request).read()
logging.debug("Got result = %s"%self.res)

class GetCommand:
def __init__(self, url):
self.headers = ''
self.url = url
def perform(self):
cj = cookielib.LWPCookieJar()
if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(c j))
self.res = url_retr.open(self.url).read()
cj.save(COOKIEFILE)
logging.debug("Got to GetCommand url = %s"%(self.url))
#self.res = urllib.urlopen(self.url).read()
logging.debug("Got result = %s"%self.res)

class Vkontakte:
def __init__(self, mail, password):
self.mail = mail
self.password = password

def login(self):
request = 'op=a_login_attempt&email=' + self.mail + '&pass=' + self.password +'&expire=0'
req = PostCommand('http://vkontakte.ru/login.php', request)
req.perform()
my_id = re.compile('good(\d+)')
logging.debug("Reply from login:\n" + req.res)
if "failed" in req.res: return "Error! Check your login/pass!"
else:
myid = my_id.search(req.res).groups()[0]
return myid

class Group:
def __init__(self, group_id):
self.group_id = group_id

def find(self, datafile = None):
if datafile: self.datafile = datafile
else:
print "No datafile to store your friends"
sys.exit(1)
gp = GetCommand('http://vkontakte.ru/search.php?group=' + self.group_id)
gp.perform()
logging.debug("Reply from login:\n" + gp.res)
sum = re.compile('<strong>.* (\d+) .*\.</strong>')
all_those = sum.search(gp.res).groups()[0]
logging.debug("Sum of all users in group:\n" + all_those)
friends = extract_id(gp.res)
add_to_file(self.datafile, friends)
time.sleep(1)
for i in range(1, int(all_those)/10 + 1):
gp = GetCommand('http://vkontakte.ru/search.php?&group=' + self.group_id + '&o=0&st=' + str(i*10))
gp.perform()
friends = extract_id(gp.res)
add_to_file(self.datafile, friends)
time.sleep(1)
return sum


class Friend:
def __init__(self):
pass
def add(self, datafile = None, limit = None, message = None):
if datafile: self.datafile = datafile
else: pass
if limit: self.limit = limit
else: self.limit = 20000000
if message: self.message = message
else: self.message=''
df = open(self.datafile, 'r')
ind = 0
hash_find = re.compile('id="hash" value="([^"]+)"')
for line in df.readlines():
id = line.strip(' \n')
fp = PostCommand('http://vkontakte.ru/friends_ajax.php', req = 'act=request_form&fid=' + id)
fp.perform()
#print fp.res
for line1 in fp.res.split('\\n'):
if hash_find.search(line1.replace('\\', '')):
hash = hash_find.search(line1.replace('\\', '')).groups()[0]
break
try: hash
except:
print "Hash not found"
logging.debug("Hash for user %s not found!"%id)
continue
fp = PostCommand('http://vkontakte.ru/friends_ajax.php', req = 'act=accept_friend&fid=' + id + '&hash=' + hash +'&verbose=1&message=' + self.message)
fp.perform()
ind +=1
if ind >= self.limit: break
return ind


def extract_id(data):
result = ''
link = re.compile('<div class="info" id="row2(\d+)">')
for line in StringIO(data).readlines():
if link.search(line):
result += link.search(line).groups()[0] + '\n'
return result


def write_file(file, string):
file1 = open(file, 'w')
file1.write(string)
file1.close()

def add_to_file(file, data):
file1 = open(file, 'a')
file1.write(data)
file1.close()

def main(*args):
mail, password = sys.argv[1:]
#mail = "mymail@mail.ru"
#password = "mypass"
### For Windows change to your path
tmp_file = '/tmp/group_mems'
mail = mail.replace("@","%40")
mylogin = Vkontakte(mail, password).login()
#print "Your ID = ", mylogin
link = raw_input("Give link of group: ")
group_id = re.search('http://vkontakte.ru/club(\d+)', link).groups()[0]
gr = Group(group_id)
gr.find(datafile = tmp_file)

fr = Friend()
print "Added ", fr.add(datafile = tmp_file), " friends"
### Limit fo adding 30 friends, example:
#print "Added ", fr.add(datafile = '/tmp/group_mems', limit = 30), " friends"
### Add friends with message "Куку", example
#message_to_send = urllib.quote("Куку")
#print "Added ", fr.add(datafile = '/tmp/group_mems', message = message_to_send), " friends"

if __name__ == '__main__': main(sys.argv)

Или вот сылка http://code.google.com/p/socialbot/source/browse/trunk/trunk/kontakt.py

gold-goblin
26.02.2010, 19:03
Полистав скрипт видим строки
def __init__(self, mail, password):
self.mail = mail
self.password = password
что, куда я думаю понятно.

а как запустить http://www.google.ru/search?hl=ru&newwindow=1&client=firefox&hs=2ah&rls=org.mozilla:ru:official&ei=ZOKHS8-sD87csAahldSrDw&sa=X&oi=spell&resnum=0&ct=result&cd=1&ved=0CBoQBSgA&q=%D0%BA%D0%B0%D0%BA+%D0%B7%D0%B0%D0%BF%D1%83%D1%8 1%D1%82%D0%B8%D1%82%D1%8C+%D1%81%D0%BA%D1%80%D0%B8 %D0%BF%D1%82+python&spell=1
но скрипт скорей всего не рабочий так как авторизация ВК менялась...

-tatarin-
26.02.2010, 20:09
Спасибо большое)))))

Vaal
26.02.2010, 21:10
подскажите как сделать такой скрипт

цикл проверяет наличия в папке файла по маске(в имени файла меняется дата)
если файл существует, цикл завершается
если нет, то работает пока файл не появится

login999
28.02.2010, 14:26
подскажите как сделать такой скрипт

цикл проверяет наличия в папке файла по маске(в имени файла меняется дата)
если файл существует, цикл завершается
если нет, то работает пока файл не появится


#!/usr/bin/env python
#-*- encoding:UTF-8-*-

import os
import time

DIR = u"c:\"

while True:
for filename in os.listdir(DIR):
if u"somedata" in filename:
break
else:
time.sleep(60)


Приблизительно так

login999
28.02.2010, 14:27
Как на питоне реаизовать добавление контакта для смс в mail.ru.
Документация по протоколу здесь: http://agent.mail.ru/ru/developers/protocol.html
Очень, очень, очень нагло.
Может вам еще и модуль для работы с mrim написать ?

login999
28.02.2010, 14:31
Имеется html код:

<li><a href="http://url/">анкор</a></li>

Нужно как бы анкор спарсить) Всегда получалось, но тут ума дать не могу, ошибки так и сыпятся :(
Ошибка в этой строке:

re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)

Сама ошибка:

Traceback (most recent call last):
File "C:\Python26\ololo.py", line 9, in <module>
re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)
File "C:\Python26\lib\re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer

page_map - проверь содержимое, там не строка или юникод-строка

login999
28.02.2010, 14:40
Я вроде адаптировал функцию, но почему то выдает


Сама функция


import urllib.request
import urllib.parse
import re
import codecs
import logging
import http.client
def send_cap(key, fn):
''' Отправляем капчу на anti-capcha.com
Вход:
key - ключ на антикапче
fn - файл с капчей
Выход:
id капчи - в случае успеха
False - неудача
'''
logging.info('--- Send captcha')


data = open(fn, 'rb').read()

# разделитель для данных
boundary= '----------OmNaOmNaOmNamo'

# тело HTTP-запроса
body = '''--%s
Content-Disposition: form-data; name="method"

post
--%s
Content-Disposition: form-data; name="key"

%s
--%s
Content-Disposition: form-data; name="file"; filename="capcha.jpg"
Content-Type: image/pjpeg

%s
--%s--

''' % (boundary, boundary, key, boundary, data, boundary)

# заголовки HTTP-запроса
headers = {'Content-type' : 'multipart/form-data; boundary=%s' % boundary}
# подключение к HTTP-серверу
h = http.client.HTTPConnection('antigate.com')
# посылка запроса
h.request("POST", "/in.php", body, headers)
# получение и анализ ответа HTTP-сервера
resp = h.getresponse()
data = resp.read()
h.close()
if resp.status == 200:
cap_id= int(data.split('|')[1])
return cap_id
else:
logging.error('Captcha not send: %s %s' % (resp.status, resp.reason))
return False


Не находит сайт антикапчи, проверь данные :)

Vaal
28.02.2010, 19:41
2 login999
спасибо!

а можно как-то сделать чтобы программа собранная в ехе не выводила подобные предупреждения?

D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated

login999
28.02.2010, 22:01
2 login999
спасибо!

а можно как-то сделать чтобы программа собранная в ехе не выводила подобные предупреждения?

D:\Python!\PARSER\dist\library.zip\MySQLdb\__init_ _.py:34: DeprecationWarning: the sets module is deprecated
Такое делает только если собрана через py2exe и консольный вариант :)
Лично я - хз как убрать этот ворнинг. Могу посоветовать только поюзать PyInstaller -мб с ним такого не будет.

P.S. Хотя я и сомнительно отношусь к ксакепу как к журналу, но после гугления на тему собиралок в экзе я наткунулся именно на их статью о PyInstaller. Жирный плюс авторам, так как сегодня полтора часа пытался собрать приложение через py2exe который в упор не тянул бинарных зависимостей, а PyInstaller всё собрал с полпинка...

CyberHunter
03.03.2010, 21:24
Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?

Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.

login999
03.03.2010, 22:47
Вот я учу питон где-то месяц(по одной книге), программный код могу прочитать, что выучил понимаю, но определенную задачу решить не могу, это нормально?

Дайте ссылки на какие-то задачники по питону, или сайты с задачами, что бы попробовать что-то написать.
Ну вот я уже год с чем-то как пытаюсь программировать на Python, а асинхронное программирование и web так и не осилил, код прочитать могу(и не только свой!), это нормально ?

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

P.S. Практика - лучший задачник ИМХО. Заглянь в раздел купли-продажи, посмотри что там хотят купить и попробуй реализовать сам...

rushter
03.03.2010, 23:21
Такое делает только если собрана через py2exe и консольный вариант :)
Лично я - хз как убрать этот ворнинг. Могу посоветовать только поюзать PyInstaller -мб с ним такого не будет.

P.S. Хотя я и сомнительно отношусь к ксакепу как к журналу, но после гугления на тему собиралок в экзе я наткунулся именно на их статью о PyInstaller. Жирный плюс авторам, так как сегодня полтора часа пытался собрать приложение через py2exe который в упор не тянул бинарных зависимостей, а PyInstaller всё собрал с полпинка...
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода :)

login999
04.03.2010, 13:25
PyInstaller крутая вещь, особенно полезно почитать его исходники в плане защиты кода :)
ну защита кода для мну такая задача не стояла, а вот выкурить приложение на PyQt4 со всеми зависимостями вместе то у него получилось на 5+, не радует только то, как это реализовано - посредством хуков :(

Chubakur
04.03.2010, 17:26
Как на pygtk создать многострочное поле для ввода/вывода текста? Желательно со скроллом. Например, для инициализации однострочного поля, надо использовать:
element=gtk.Entry()

login999
04.03.2010, 18:10
Как на pygtk создать многострочное поле для ввода/вывода текста? Желательно со скроллом. Например, для инициализации однострочного поля, надо использовать:
element=gtk.Entry()
Никогда не писал на pyGTK :)
На wxpython это можно получить добавлением флага wx.TE_MULTILINE

Chubakur
04.03.2010, 18:11
Никогда не писал на pyGTK :)
На wxpython это можно получить добавлением флага wx.TE_MULTILINE
никогда не писал на wx. Если можешь ,дай ссылку на мануал, как подключать и подобное :)

login999
04.03.2010, 18:16
никогда не писал на wx. Если можешь дай ссылку на мануал, как подключать и подобное :)
wxpython.org - там есть бинарная сборка под форточки и Python 2.6 , устанавливается с полпинка (относительно 32 разрядной системы), проблем не возникало (были только со сборкой в exe, ну да там все быстро решилось). Есть мордодел (поначалу немного неудобный, но потом в принципе привыкнешь) - wxformbuilder.org (качать последнюю бету с sourcefoge, только она умеет генерить для питона код (3.66 вроде или чето такое)). Дальше только маны :)

P.S. Но "мечту секретарши" ака самый песдатый гуй то ИМХО проще всего делать на PyQt , если подразумевать "изкаропки"

Ну и Tkinter тоже никто не отменял - для маленьких гуев можно поюзать, тем более что он "изкаропки"

Ice_VeNOm
05.03.2010, 19:28
Я тут быдлокодил..... http://dumpz.org/17440/

def asd(line):
line1 = re.split('[\:]+',line)
mail = line1[0]
flag=False
pas = line1[1]
print(pas)
serv = re.split('[\@,\:]+',line)
serv=serv[1]
sh=0
print('Start activate')
while flag==False:
try:
box = poplib.POP3("pop3."+serv, "110")
box.user(mail)
box.pass_(pas)
numMessages = len(box.list()[1])
s = box.retr(len(box.list()[1]))[1]
q=0
for i in s:
v = re.search(b'http://vkontakte.ru/register.php?',i)
if v != None:
q=i
q= q.decode()
print(q)
print('We have a message')
res = urllib.request.urlopen(q)
flag = True
break
if q==0:
box.quit()
print('Waiting for message...')
time.sleep(10)
except:
print("Unexpected error:", sys.exc_info())
sh=sh+1
if sh>3:
print('Oh shi~')
flag = True
else:
time.sleep(15)

Но вот не пойму в чем проблема, при подключении к любому ящику, например майл.ру выдает ошибку. Для майл ру она сообщает о том, что пароль от аккаунта не верен, хотя с этим паролем на аккаунт можно зайти.
Подскажите пожалуйста, в чем может быть проблема.
Используется poplib и python 3.1
забыл добавить. входящая переменная line идет вида "mail@mail.com:password

login999
05.03.2010, 20:33
pas = line1[1].strip("\r\n")

Не оно ?
P.S. Некошерно юзать регулярки для разбивки строки - у нее(str) есть метод .split()

Ice_VeNOm
05.03.2010, 21:20
Теперь выдает следующее:
<class 'AttributeError'>, AttributeError("'POP3' object has no attribute 'sock'",), <traceback object at 0x02E93328>

login999
05.03.2010, 22:51
Теперь выдает следующее:
Так, а вот об этом подробнее - в приведенном участке кода нету той строки, на которую ты выдал трейсбек. Ругается на то, что ты где-то используешь атрибут sock применительно к обьекту класса POP3.
Чтоб по нормальному - то выложи код плиз. Не хочешь светить - можно в ПМ...

Ice_VeNOm
05.03.2010, 23:30
все сделал ^_^
цикл был не правильно построен

H:H:H
06.03.2010, 19:12
http://exnews.org/direct_download.html?full_url=http://depositfiles.com/ru/files/1265758

Как выловить ссылку под словом "Скачать" ?

Тоже самое с sfrom.net/http://depositfiles.com/ru/files/1265758

Я мог бы выловить из исходника ссылку через .split() Но ссылки в коде нет.
Подскажите как выловить.

login999
06.03.2010, 20:08
http://exnews.org/direct_download.html?full_url=http://depositfiles.com/ru/files/1265758

Как выловить ссылку под словом "Скачать" ?

Тоже самое с sfrom.net/http://depositfiles.com/ru/files/1265758

Я мог бы выловить из исходника ссылку через .split() Но ссылки в коде нет.
Подскажите как выловить.
Бла-бла-бла. Через .split()ты офигеешь ее отуда вылавливать, даже если она там будет. А если учитывать то что она генерится на js то ее там и не будет никогда. Вопрос сформулирован некорректно и к Python не имеет ни малейшего отношения - сниффер в руки и смотреть запросы.

H:H:H
07.03.2010, 08:23
Ну-тут дело даже не в .split а в том что я ссылку на материал по парсингу JS Сылок найти немогу Гугл молчит

login999
07.03.2010, 12:18
Ну-тут дело даже не в .split а в том что я ссылку на материал по парсингу JS Сылок найти немогу Гугл молчит

Сниффер в руки и смотреть запросы.
И причем здесь парсинг js =\

Ice_VeNOm
10.03.2010, 18:25
Тут решил ознакомиться с питоном в сайтостроении...
Хостинг с питоном
скрипт запускаю из папки cgi


#!/usr/bin/env python
import cgi
cgi.test()

код работает корректно


#!/usr/bin/env python
# -*- coding: utf8 -*-
print 'Hi'



не пашет - пишет ошибку 500
почему?

Chubakur
10.03.2010, 18:56
Пишу сейчас свой http сервер(так ради обучения). Мне нужно передавать хедер Content-type. Каким образом это замутить? Просто через send не получается. Использую ТОЛЬКО библиотеку socket.

login999
11.03.2010, 10:55
1) Под web не пишу, тут помощи не ждите.
2) 2 Ice_VeNOm - нафига cgi если есть хуева туча обвязок для писания под веб ?
3) 2 Chubakur - зачем нужен очередной уныло-говняный веб-сервер, если даже в стандартной библиотеке он уже написан до тебя ?

Шо ж бля за страсть писать велосипеды ? :(

Chubakur
11.03.2010, 16:51
3) 2 Chubakur - зачем нужен очередной уныло-говняный веб-сервер, если даже в стандартной библиотеке он уже написан до тебя ?
Шо ж бля за страсть писать велосипеды ? :(
Мне не важно , написано оно до меня, или нет. Я просто хочу понять как это делается, именно интересует передача хедеров.

login999
11.03.2010, 17:56
Мне не важно , написано оно до меня, или нет. Я просто хочу понять как это делается, именно интересует передача хедеров.
http://fragments.turtlemeat.com/pythonwebserver.php

CyberHunter
11.03.2010, 18:04
Скажите: как сделать из .py в .exe? py2exe работает для версии 2.6, а у меня 3.0.
Что посоветуете?

login999
11.03.2010, 18:13
Скажите: как сделать из .py в .exe? py2exe работает для версии 2.6, а у меня 3.0.
Что посоветуете?
лично я - хз, на тройке не сижу

CyberHunter
11.03.2010, 18:15
login999 а что есть на подобии пи2ехе? мб найду версию для тройки.

login999
11.03.2010, 18:16
cx_freeze, pyinstaller

inlanger
23.03.2010, 10:43
Кто-то работает с ctypes? Как, например, используя ctypes потушить монитор? Ну, или хоть какой-то живой пример, потому что в инете с этим туго ( Я просто под winmobile хочу писать на питоне, но там многого не хватает.

Tigger
23.03.2010, 10:47
Скажите: как сделать из .py в .exe? py2exe работает для версии 2.6, а у меня 3.0.
Что посоветуете?
Юзай 2.6. Все остальные - говно!

CyberHunter
24.03.2010, 22:13
Юзай 2.6. Все остальные - говно!
Походу так и сделаю :(
Не всегда чем больше, тем лучше :)
Да и литературы маловато :(

Flcn
27.03.2010, 02:10
Походу так и сделаю :(
Не всегда чем больше, тем лучше :)
Да и литературы маловато :(

больше не всегда лучше)

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

login999
31.03.2010, 20:24
Кто-то работает с ctypes? Как, например, используя ctypes потушить монитор? Ну, или хоть какой-то живой пример, потому что в инете с этим туго ( Я просто под winmobile хочу писать на питоне, но там многого не хватает.
Не первый раз тебе отвечаю, что лично я - хз :)

login999
31.03.2010, 20:27
Почему? :(
Потому что то что ниже 2.6 почти все поддерживается и с помощью 2.6(опустим столь либимый пхпшниками pyCURL), а то что выше него (3.х) не поддерживается почти ничем(очень мало либ под него, так как относительно недавно начали разрабатывать третью ветку) И вообще 2.х это самый распространенный.

[London]
04.04.2010, 04:16
решил начать изучать питон..скачал версию 2.6 под винду......Хотел спросить, нельзя программировать не в DOS, может кто то даст нормальный урл на скачку...гугл отказывается помогать)

DTW
04.04.2010, 08:31
С питом вместе идет Python IDLE

Там можна выбрать File-New Window

будет текстовой файл

пишешь код
Save as
сохраняешь под test.py
потом жмешь F5

rushter
04.04.2010, 09:35
pyscripter

login999
04.04.2010, 23:40
Geany, Notepad++, Eclipse+PyDev, Eric, NetBeans, Komodo Edit, Wing IDE
А вообще-то, вопрос глупый

gold-goblin
05.04.2010, 00:15
Geany, Notepad++, Eclipse+PyDev, Eric, NetBeans, Komodo Edit, Wing IDE
А вообще-то, вопрос глупыйМожет он хочет гуи писать?
[London] Если так то ищи python gui

nikoTM
05.04.2010, 02:36
можно ли написать на питоне программу-переключатель клавиатуры (расклад писать самому)...может у кого есть такой опыт ? гугл ничего толком не ответил

Flcn
07.04.2010, 00:42
можно ли написать на питоне программу-переключатель клавиатуры (расклад писать самому)...может у кого есть такой опыт ? гугл ничего толком не ответил

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

login999
07.04.2010, 09:16
если под венду
то тут нужен не только питон, чтобы она дала тебе клавиши перехватывать
pyHook ...

nonamez
22.04.2010, 19:02
народ,а не в курсах как питон через сокс пустить?

login999
22.04.2010, 21:46
народ,а не в курсах как питон через сокс пустить?
Весьма расплывчасто конешн, но :
На уровне сокетов - socksipy
Повыше - pyCURL.
Pure Python - socksipy only

AquaKlaster
22.04.2010, 21:50
Как парсить текст в Python без использования regexp?

Например мне нужно вытащить из текста: >Best Friend</a> слово Best Friend

login999
22.04.2010, 21:59
Как парсить текст в Python без использования regexp?

Например мне нужно вытащить из текста: >Best Friend</a> слово Best Friend
Как бы малопонятно, если честно )))
Но есть pyparsing, правда она не для таких целей предназначена.
А так - то

html = ">Best Friend</a>"
print html[1:-4]

nonamez
24.04.2010, 00:50
Весьма расплывчасто конешн, но :
На уровне сокетов - socksipy
Повыше - pyCURL.
Pure Python - socksipy only
я в кодинге 0.Скрипт под заказ делали давно корешу.Возможно пустить через проги,наподобии проксикапа?

login999
24.04.2010, 09:20
я в кодинге 0.Скрипт под заказ делали давно корешу.Возможно пустить через проги,наподобии проксикапа?
По идее - да, но я таким не занимался.
Попробуй - отпишешь результат.

nonamez
25.04.2010, 16:33
ладно,это потом.Поможите еще с pyCurl, как его прикрутить к activepython? Уже изниможился,никак не выходит.

nonamez
25.04.2010, 17:32
да,стоит у меня последня версия активпитон(2,6 версия питона вродь)

taxpayer
25.04.2010, 17:48
nonamez, пикурл - это не некое соксовое окно типа сокскэп или соксчейн, это библиотека, работающая до 2.5. Связать предполагаемый httplib2 с пикурлом не получится, софт нужно переписывать под эту библиотеку. Если же у тебя запросы идут на низком уровне, то можно обойтись добавлением одной функции запроса к соксу

nonamez
25.04.2010, 18:28
это нечем не свяаный вопрос с прокси. просто отдельный вопрос

taxpayer
25.04.2010, 18:30
http://pycurl.sourceforge.net/download/pycurl-ssl-7.18.2.win32-py2.5.exe


import pycurl


Обрати внимание py2.5

nonamez
25.04.2010, 18:42
в том и трабла,до формата пц(вчера) мне дали ссылку для скачки питона с актистайт и какую-то ссылку.Тоесть пахало на 2,6.Ладно,попробую на 2,5,просто есть возможность-что не будит пахать скрипт на 2,5

mr.The
25.04.2010, 23:18
Магия?
Так работает:
import thread, time

def some_function(text, some):
print "Text: "+text


thread.start_new_thread(some_function, ("qwe", ""))

time.sleep(3);

А так нет:
import thread, time

def some_function(text):
print "Text: "+text


thread.start_new_thread(some_function, ("qwe"))

time.sleep(3);

что не так?

taxpayer
25.04.2010, 23:32
print type(('a')), type(('a', 'b'))



import thread, time

def some_function(text): print "Text: ", text

thread.start_new_thread(some_function, ('qwe',))
time.sleep(3)

XPYMGT
26.04.2010, 00:07
Магия?
Так работает:


А так нет:


что не так?


Точно кортеж а не строка в качестве параметра переждается, надо без скобок писать

login999
26.04.2010, 09:22
Магия?


Обьявление tuple(в принципе я на всякий случай это делаю во всех последовательностях кроме dict) с размером в одно значение должно заканчиваться запятой, это кстати в туториале есть.

login999
26.04.2010, 09:30
в том и трабла,до формата пц(вчера) мне дали ссылку для скачки питона с актистайт и какую-то ссылку.Тоесть пахало на 2,6.Ладно,попробую на 2,5,просто есть возможность-что не будит пахать скрипт на 2,5
На ActiveState они свою сборку релизят немного позже основной ветки, и это если чессн не всегда радует, ибо иногда правят такие баги, которые кумарят чуть ли не по полгода. Возможность того что он не будет пахать крайне мала. А вот на активстейт (http://www.activestate.com/activepython/downloads/) есть ссылка на даунлоад и версии 2.5 (в самом низу).

scrat
27.04.2010, 12:10
подскажите какую-нибудь библиотеку для шифрования или секьюрное key-value хранилище

XPYMGT
27.04.2010, 13:40
А я себе сегодня питон 3.1.2 скачал там можно русские имена переменным, функциям, классам давать, а то уже заебло названия придумывать на english...

login999
27.04.2010, 13:45
подскажите какую-нибудь библиотеку для шифрования или секьюрное key-value хранилище
Так чтоб по красивому то Ж полная :(.
Сам вот озадачился шифрованием.
Pure Python есть только AES(непонятно как реализовано вообще, походу кто-то херней страдал), также есть pyDes(triple DES есть).

Не PurePython :
Есть PyCrypto(где-то отрыл инсталлер под вынь, но инсталлер походу кривой, ибо не завелось, компилить скорее всего будут ебли без MinGW(не прет)), ncrypt(под вынь нормально завелся), еще есть KeyCzar (чето от лукавого(от гугла тобишь)), походу есть еще чего-то, но заебался уже после всего этого.

Еще к SQLAlchemy есть приблуда по имени Elixir, когда копошился в сорцах то натыкался на (я так понял) прозрачное шифрование инфы в БД (не помню точно где включается и что хочет для работы, но шифрует вроде AES). Короче из реально переносимого между платформами и вменяемого я так понял есть только pyDes, для моих целей его в принципе хватит, а ты для себя решай )))

П.С. Морду для твоего твиттер-клиента можно нарисовать и на WxPython, но будет не так карасиво как на КоТэ, а так то выбор мордо-фреймворков не особо шикарен - Wxpython и Qt, также есть Tkinter и pyFLTK, но мну их вообще сразу отмел из-за ... бла-бла-бла.

AVIRA
28.04.2010, 22:51
кто знает что означает эта ошибка на мобильном питоне 9.1 symbian и ее решение:
Traceback (most recent call last):
File "C:\private\f0eeaa0f\default.py", line 16, in ?
import mobiserf
File "c:\resource\site.py", line 97, in platsec_import
return _original_import(name, globals, locals, fromlist)
File "E:\\\System\Apps\MOBISERF\MOBISERF.py", line 55001, in ?
File "c:\resource\site.py", line 97, in platsec_import
return _original_import(name, globals, locals, fromlist)
SymbianError: [Errno -1] KErrNotFound

XPYMGT
28.04.2010, 23:43
кто знает что означает эта ошибка на мобильном питоне 9.1 symbian и ее решение:
Traceback (most recent call last):
File "C:\private\f0eeaa0f\default.py", line 16, in ?
import mobiserf
File "c:\resource\site.py", line 97, in platsec_import
return _original_import(name, globals, locals, fromlist)
File "E:\\\System\Apps\MOBISERF\MOBISERF.py", line 55001, in ?
File "c:\resource\site.py", line 97, in platsec_import
return _original_import(name, globals, locals, fromlist)
SymbianError: [Errno -1] KErrNotFound

У автора спроси.

Ice_VeNOm
02.05.2010, 21:18
Многопоточность python 3.1
что почитать посоветуете?

taxpayer
02.05.2010, 22:14
Многопоточность python 3.1
что почитать посоветуете?
документацию (http://docs.python.org/py3k/library/threading.html)

XPYMGT
04.05.2010, 10:57
Как отправить письмо в utf-8 (Python 3.1)

import smtplib
from email.mime.text import MIMEText
хост = "smtp.mail.ru"
пользователь = "mishustin.sergei"
пароль = "*** вам а не пароль"
от_кого = "mishustin.sergei@mail.ru"
адресаты = ["komprenda@gmail.com"]
заголовок = "Тест"
текст_сообщения = "Проверка"
соо = MIMEText(текст_сообщения, 'plain', 'utf-8')
соо['From'] = от_кого
соо['To'] = адресаты[0]
соо['Subject'] = заголовок
обьект = smtplib.SMTP(хост, 2525)
обьект.login(пользователь, пароль)
обьект.sendmail(от_кого, кому, соо.as_string())
обьект.quit()


Приводит к ошибке:


Traceback (most recent call last):
File "D:\Program Files\Python31\lib\email\message.py", line 269, in set_charset
cte(self)
TypeError: 'str' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\Program Files\Python27\mail.ru\src\mail.py", line 10, in <module>
соо = MIMEText(текст_сообщения, 'plain', 'utf-8')
File "D:\Program Files\Python31\lib\email\mime\text.py", line 30, in __init__
self.set_payload(_text, _charset)
File "D:\Program Files\Python31\lib\email\message.py", line 234, in set_payload
self.set_charset(charset)
File "D:\Program Files\Python31\lib\email\message.py", line 271, in set_charset
self._payload = charset.body_encode(self._payload)
File "D:\Program Files\Python31\lib\email\charset.py", line 380, in body_encode
return email.base64mime.body_encode(string)
File "D:\Program Files\Python31\lib\email\base64mime.py", line 94, in body_encode
enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
TypeError: must be bytes or buffer, not str

login999
04.05.2010, 11:13
Как отправить письмо в utf-8 (Python 3.1)

import smtplib
from email.mime.text import MIMEText
хост = "smtp.mail.ru"
пользователь = "mishustin.sergei"
пароль = "*** вам а не пароль"
от_кого = "mishustin.sergei@mail.ru"
адресаты = ["komprenda@gmail.com"]
заголовок = "Тест"
текст_сообщения = "Проверка"
соо = MIMEText(текст_сообщения, 'plain', 'utf-8')
соо['From'] = от_кого
соо['To'] = адресаты[0]
соо['Subject'] = заголовок
обьект = smtplib.SMTP(хост, 2525)
обьект.login(пользователь, пароль)
обьект.sendmail(от_кого, кому, соо.as_string())
обьект.quit()


Приводит к ошибке:


Traceback (most recent call last):
File "D:\Program Files\Python31\lib\email\message.py", line 269, in set_charset
cte(self)
TypeError: 'str' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\Program Files\Python27\mail.ru\src\mail.py", line 10, in <module>
соо = MIMEText(текст_сообщения, 'plain', 'utf-8')
File "D:\Program Files\Python31\lib\email\mime\text.py", line 30, in __init__
self.set_payload(_text, _charset)
File "D:\Program Files\Python31\lib\email\message.py", line 234, in set_payload
self.set_charset(charset)
File "D:\Program Files\Python31\lib\email\message.py", line 271, in set_charset
self._payload = charset.body_encode(self._payload)
File "D:\Program Files\Python31\lib\email\charset.py", line 380, in body_encode
return email.base64mime.body_encode(string)
File "D:\Program Files\Python31\lib\email\base64mime.py", line 94, in body_encode
enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
TypeError: must be bytes or buffer, not str

Попробуй так :

текст_сообщения = "Проверка".encode("UTF-8")

В 3.1 ИМХО только неразберихи добавлось с этим bytes типом данных. Фактически он обозначает собой str из 2.6 в определенной кодировке. То же что обьявлялось в 2.6 как string = u"Вася" в 3.1 обьявляется как строка = "Вася", т.е. то что ты воспринимаешь как str из 2.6 в 3.1 фактически является unicode из 2.6. По крайней мере я это так понял.

XPYMGT
04.05.2010, 12:01
Попробуй так :

текст_сообщения = "Проверка".encode("UTF-8")

В 3.1 ИМХО только неразберихи добавлось с этим bytes типом данных. Фактически он обозначает собой str из 2.6 в определенной кодировке. То же что обьявлялось в 2.6 как string = u"Вася" в 3.1 обьявляется как строка = "Вася", т.е. то что ты воспринимаешь как str из 2.6 в 3.1 фактически является unicode из 2.6. По крайней мере я это так понял.

да не работает это,, с утф-8 по ходу вообще не работает, сделал всё по старинке на python 2.7a


#-*- coding: utf-8 -*-
import smtplib
server = "smtp.mail.ru"
user = "mishustin.sergei"
password = "*****"
FROM = "mishustin.sergei@mail.ru"
TO = "komprenda@gmail.com"
subject = u"Тест".encode("windows-1251")
text = u"Проверка".encode("windows-1251")
msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" %(FROM, TO, subject, text)
print(msg)
s = smtplib.SMTP(server, 2525)
s.login(user, password)
s.sendmail(FROM, TO, msg)
s.quit()


Какой интервал должен быть для рассылки слышал что у маила раз в 1 минуту, и не более n писем, чему это n равно?

login999
04.05.2010, 12:11
да не работает это,, с утф-8 по ходу вообще не работает, сделал всё по старинке на python 2.7a


#-*- coding: utf-8 -*-
import smtplib
server = "smtp.mail.ru"
user = "mishustin.sergei"
password = "*****"
FROM = "mishustin.sergei@mail.ru"
TO = "komprenda@gmail.com"
subject = u"Тест".encode("windows-1251")
text = u"Проверка".encode("windows-1251")
msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" %(FROM, TO, subject, text)
print(msg)
s = smtplib.SMTP(server, 2525)
s.login(user, password)
s.sendmail(FROM, TO, msg)
s.quit()


Какой интервал должен быть для рассылки слышал что у маила раз в 1 минуту, и не более n писем, чему это n равно?
Об этом n не знаю, а вот smtp у них подтупливает, это да.

XPYMGT
04.05.2010, 12:23
Об этом n не знаю, а вот smtp у них подтупливает, это да.
А как всё-таки правильно на 3 питоне код записать

login999
04.05.2010, 12:33
А как всё-таки правильно на 3 питоне код записать
Вечером отпишу. Щас нету возможности проверить.

XPYMGT
04.05.2010, 15:07
гДПЮЯРБСИРЕ, ЛНЪ ЯРСДХЪ ГЮМХЛЮЕРЯЪ ЯНГДЮМХЕЛ ЯЮИРНБ(ЯЮИРНБ БХГХРНЙ, ОЕПЯНМЮКЭМШУ ЯЮИРНБ, ХМРЕПМЕР ЛЮЦЮГХМНБ), БЕА-ДХГЮИМНЛ, ОПНБНДХЛ ПЕЙКЮЛМШЕ ЮЙЖХХ Б ХМРЕПМЕР, ЙКХЕМРЮЛ ОПЕДНЯРЮБКЪЕЛ УНЯРХМЦ, ПЮАНРЮ Я МЮЛХ ГЮКНЦ БЮЬЕЦН АСДСЫЕЦН СЯОЕУЮ. оПХЕЛКХЛШЕ ЖЕМШ. дНО. email: komprenda@gmail.com. рЕК. 8-904-XXX-XX-XX (10.00 - 21.00 ЕФЕДМЕБМН). я СБЮФЕМХЕЛ, яЕПЦЕИ лХЬСЯРХМ.

Блять людям какой-то бред типо этого приходит(на почтовые ящики на маиле). Что делать?

login999
04.05.2010, 16:20
гДПЮЯРБСИРЕ, ЛНЪ ЯРСДХЪ ГЮМХЛЮЕРЯЪ ЯНГДЮМХЕЛ ЯЮИРНБ(ЯЮИРНБ БХГХРНЙ, ОЕПЯНМЮКЭМШУ ЯЮИРНБ, ХМРЕПМЕР ЛЮЦЮГХМНБ), БЕА-ДХГЮИМНЛ, ОПНБНДХЛ ПЕЙКЮЛМШЕ ЮЙЖХХ Б ХМРЕПМЕР, ЙКХЕМРЮЛ ОПЕДНЯРЮБКЪЕЛ УНЯРХМЦ, ПЮАНРЮ Я МЮЛХ ГЮКНЦ БЮЬЕЦН АСДСЫЕЦН СЯОЕУЮ. оПХЕЛКХЛШЕ ЖЕМШ. дНО. email: komprenda@gmail.com. рЕК. 8-904-XXX-XX-XX (10.00 - 21.00 ЕФЕДМЕБМН). я СБЮФЕМХЕЛ, яЕПЦЕИ лХЬСЯРХМ.

Блять людям какой-то бред типо этого приходит(на почтовые ящики на маиле). Что делать?
http://python.su/forum/viewtopic.php?pid=24145

login999
04.05.2010, 20:26
Всё оказалось еще проще )

#!/usr/bin/python
#-*-encoding:UTF-8-*-

import smtplib
import email
from email.mime.text import MIMEText

хост = "smtp.mail.ru"
пользователь = "чей-то логин"
пароль = "чей-то пароль"
от_кого = "чьё-то мыло"
адресаты = ["кому-то там"]
заголовок = "Тест"
текст_сообщения = "Проверка".encode("utf-8")
соо = MIMEText(текст_сообщения, 'plain', 'utf-8')
обьект = smtplib.SMTP(хост, 2525)
обьект.login(пользователь, пароль)
mess = соо.as_string()
обьект.sendmail(от_кого, адресаты, mess)
обьект.quit()

Ice_VeNOm
13.05.2010, 19:12
opener = urllib.request.build_opener(urllib.request.HTTPCoo kieProcessor(cj))
opener.addheaders = ....
нужно передать 11 заголовков. После передачи 5ти

[('User-agent','Opera/9.80'),('Accept-Language',' ru-RU,ru;q=0.9,en;q=0.8'),('Accept-Charset',' iso-8859-1, utf-8, utf-16, *;q=0.1'),('Accept-Encoding',' deflate, gzip, x-gzip, identity, *;q=0'),('Cookie2',' $Version=1'),('Connection',' Keep-Alive, TE'),]
питон пишет
File "C:\Python31\lib\urllib\request.py", line 1029, in do_request_
for name, value in self.parent.addheaders:
ValueError: too many values to unpack
python 3.1

login999
14.05.2010, 20:01
Попробуй приблизительно так - Питон 3.1. не стоит чтобы проверить

opener = urllib.request.build_opener(urllib.request.HTTPCoo kieProcessor(cj))
headers = {"User-agent":"Opera/9.80", "Accept-Language":" ru-RU,ru;q=0.9,en;q=0.8"}
req = urllib.request.Request("http://www.google.com", headers=headers)
print opener.open(req)

boris_blade
23.05.2010, 15:36
Всем привет.
есть такой вопрос.
У меня есть некий класс, который передает веб-серверу два параметра.

ml = Mail('mail', 'site.com')
Так вот вопрос как передавать классу список
вида имя@домен?

login999
24.05.2010, 09:18
Всем привет.
есть такой вопрос.
У меня есть некий класс, который передает веб-серверу два параметра.

ml = Mail('mail', 'site.com')
Так вот вопрос как передавать классу список
вида имя@домен?


ml = Mail(["mail@domain", "mail2@domain"])

М ?

boris_blade
24.05.2010, 23:38
нет так не пойдет.
Емейлов может быть тысяча.
нужно передавать классу их именно из файла

Byte_
25.05.2010, 08:22
boris_blade, не совсем понятно, ты хочешь из файла взять список адресов?

mails = []
def readlist():
file = open('mails.txt','r')
for line in file:
line = line.replace("\n","")
line = line.replace("\r","")
mails.append(line)
eadlist()

я это решал так.

login999
25.05.2010, 09:10
Так вот вопрос как передавать классу список
вида имя@домен?
...

нет так не пойдет.

В моем примере в класс передавался именно список.
Пожалуйста, на будущее будьте добры задавать вопросы своими словами, если путаетесь в терминологии.

По сути - в вашем случае в класс можно передавать хэндлер на файл, или создавать динамическую очередь.

В первом случае это будет выглядеть как
ml = Mail(open("mails.txt"))
Только обратите внимание, что не нужно вызывать метод readlines(). Второй вариант сложнее в реализации, это-передавать в класс обьект типа Queue, который будет автоматически наполняться отдельным потоком до определенного значения (создать что-то типа буфера). Из собственного опыта могу сказать что второй вариант будет быстрее, но остановить его сложнее, если вас интересует управление очередью.

P.S. Тысяча имейлов это так, чисто поорать. Задумываться об этом стоит в том случае, если у вас счет идет на миллионы/планируется запускать в таких условиях, что кол-во памяти ограничено.

login999
25.05.2010, 09:11
boris_blade, не совсем понятно, ты хочешь из файла взять список адресов?

mails = []
def readlist():
file = open('mails.txt','r')
for line in file:
line = line.replace("\n","")
line = line.replace("\r","")
mails.append(line)
eadlist()

я это решал так.


mails = [line.strip() for line in open("mails.txt")]

Byte_
25.05.2010, 10:15
login999, красиво =)

boris_blade
26.05.2010, 00:04
login999

Благодарствую.
Утром попробую сделать так.

Redwood
26.05.2010, 18:06
Никак не получается запустить парсер (после запуска выкидывает из консоли), в скрипте реализован GUI. Может быть для него нужно качать отдельно какие то библиотеки? Интерпретатор 2 ветки (2.6).
С питоном сталкиваюсь впервые, так что сильно не ругать, если вопрос глупый.
Исходник: http://dumpz.org/9729/

login999
26.05.2010, 19:12
Никак не получается запустить парсер (после запуска выкидывает из консоли), в скрипте реализован GUI. Может быть для него нужно качать отдельно какие то библиотеки? Интерпретатор 2 ветки (2.6).
С питоном сталкиваюсь впервые, так что сильно не ругать, если вопрос глупый.
Исходник: http://dumpz.org/9729/
О_о оно кому-то нужно еще :D
Во второй строчке замени utf-8 на cp1251.

Redwood
26.05.2010, 20:01
О_о оно кому-то нужно еще :D
Во второй строчке замени utf-8 на cp1251.
Спасибо, теперь работает ) Странно, что не обратил внимание на кодировку. В связи с закрытием поиска на slil.ru, очень актуально )

boris_blade
05.06.2010, 23:04
ml = Mail([line.strip() for line in open("mail.txt")])

Пробую так.
Но оно ругается на количество аргументов

TypeError: __init__() takes exactly 3 arguments (2 given)

boris_blade
06.06.2010, 12:47
Собственно разобрался сам.
Решил с помощью цикла.

myaso
07.06.2010, 14:56
делть

TikTik
07.06.2010, 22:02
О_о оно кому-то нужно еще :D
........................
Ты что
Класс login999 спасибо для новичка это просто находка !!!

Всё подробненько супер !

login999
10.06.2010, 17:16
делть
Сделал ^.^

login999
10.06.2010, 17:20
Ты что
Класс login999 спасибо для новичка это просто находка !!!

Всё подробненько супер !
Да я как код увидел то щас вообще теряюсь, как оно работало О_о.