Блог python на хабрахабре
Python / Документация по Grab — библиотеке для парсинга сайтов
- 05 Мар 10:27
Писать много неохота. Поэтому коротенечко: нужно установить Vidalia Bundle. Затем модуль для Python – TorCtl. Затем проксей курлу указываем 127.0.0.1:9050 с типом Socks5. Всё, таким образом мы лазим серферим через какую-то проксю тора. Для смены этой прокси нам надо приконнектиться к тору и сбросить соединение с помощью модуля TorCtl.
conn = TorCtl.connect()
conn.sendAndRecv('signal newnym\r\n')
Написал клиенту простейший скрипт с использованием pycurl (я его всегда, кстати, использую), который состоит буквально из одного get-запроса, а при использовании этого скрипта под Linux, начала периодически валиться ошибка Segmentation fault и обрывать работу скрипта. Как выяснилось надо было вставить следующий кусочек кода, чтобы этого не происходило:
import sys import pycurl try: import signal from signal import SIGPIPE, SIG_IGN signal.signal(signal.SIGPIPE, signal.SIG_IGN) except ImportError: pass
Пока не пробовал, но чтобы не забыть решил записать.
Написал клиенту простейший скрипт с использованием pycurl (я его всегда, кстати, использую), который состоит буквально из одного get-запроса, а при использовании этого скрипта под Linux, начала периодически валиться ошибка Segmentation fault и обрывать работу скрипта. Как выяснилось надо было вставить следующий кусочек кода, чтобы этого не происходило:
import sys import pycurl try: import signal from signal import SIGPIPE, SIG_IGN signal.signal(signal.SIGPIPE, signal.SIG_IGN) except ImportError: pass
Пока не пробовал, но чтобы не забыть решил записать.
Подробной статьи для чайников я не нагуглил, даже на php, а ftp-uploader написать было необходимо. Поэтому приведу куски кода, которые мне помогли. Во-первых, нам надо залогиниться, юзаем опцию:
# userpwd = "login:parol" curl.setopt(pycurl.USERPWD,userpwd)
Во-вторых нам надо заливать файлы, делается это так:
size = os.path.getsize(path) fp = open(path,"rb") # url = ftp://ftp.host.com/directory/file.txt curl.setopt(pycurl.URL,url) curl.setopt(pycurl.UPLOAD,1) curl.setopt(pycurl.INFILE,fp) curl.setopt(pycurl.INFILESIZE,size) curl.perform()
В-третьих, нам надо создавать папки, а для этого нужно юзать команды ftp. Делается это так:
quote = "MKD {0}".format(folder)
curl.setopt(pycurl.URL,host)
curl.setopt(pycurl.POSTQUOTE,[quote])
curl.setopt(pycurl.UPLOAD,0)
curl.perform()
Пока всё, этого мне хватило, чтобы написать uploader. Пришлось немного попариться при создании вложенных папок, но вроде всё работает=) Прокси юзать также как и для http.
Подробной статьи для чайников я не нагуглил, даже на php, а ftp-uploader написать было необходимо. Поэтому приведу куски кода, которые мне помогли. Во-первых, нам надо залогиниться, юзаем опцию:
# userpwd = "login:parol" curl.setopt(pycurl.USERPWD,userpwd)
Во-вторых нам надо заливать файлы, делается это так:
size = os.path.getsize(path) fp = open(path,"rb") # url = ftp://ftp.host.com/directory/file.txt curl.setopt(pycurl.URL,url) curl.setopt(pycurl.UPLOAD,1) curl.setopt(pycurl.INFILE,fp) curl.setopt(pycurl.INFILESIZE,size) curl.perform()
В-третьих, нам надо создавать папки, а для этого нужно юзать команды ftp. Делается это так:
quote = "MKD {0}".format(folder)
curl.setopt(pycurl.URL,host)
curl.setopt(pycurl.POSTQUOTE,[quote])
curl.setopt(pycurl.UPLOAD,0)
curl.perform()
Пока всё, этого мне хватило, чтобы написать uploader. Пришлось немного попариться при создании вложенных папок, но вроде всё работает=) Прокси юзать также как и для http.
На форуме дали ссылку на популярные модули для Питона, причем как для 2.6, так и 2.7. Все модули в виде exe-файлов, не надо набирать в консоли setup.py install и тому подобное. Сама ссылка очень порадовала, все необходимые мне модули там есть: pycurl, mechanize(ClientForm), Pil, и т.д.; и заставила задуматься о переходе на версию 2.7.
На форуме дали ссылку на популярные модули для Питона, причем как для 2.6, так и 2.7. Все модули в виде exe-файлов, не надо набирать в консоли setup.py install и тому подобное. Сама ссылка очень порадовала, все необходимые мне модули там есть: pycurl, mechanize(ClientForm), Pil, и т.д.; и заставила задуматься о переходе на версию 2.7.
Решил выложить видео работы простенького скрипта для регистрации акков в ЖЖ. Для работы этого скрипта необходимо установить Python и PyCurl. Также необходимо позаботиться о перенаправлении почты на один почтовый ящик. После этого можно запускать скрипт, предварительно указав нужные параметры (ключ от антикапчи, количество потоков, адрес почтового ящика и т.д.):
В своё время узнал про две обёртки для pycurl. Первая – grab, вторая – pylibcurl, ctypes обертка не требует установки pycurl‘а. Собственно, я ими даже не пользовался, пытался начать, но забрасывал, зря, конечно. А на данный момент юзать я их тоже не собираюсь, поскольку думаю обворачивать pycurl в собственные классы, нет, не так круто как эти две, а скромненько для своих целей, не для общего пользования. Думаю для каждого SEO-питонщика наступает время, когда он пишет собственную обертку для pycurl=) А если кто-то и искал ООП реализацию pycurl‘a, вот вам целых две на выбор.