Архив Сентябрь, 2009
Xedant Human Emulator и Python.
комментарии: 9
Помню как я его купил за 200 баксов. Если бы не знакомый пришлось бы все 300 выкладывать. Думал сейчас напишу регалок — разбогатею. Нифига не вышло, ну да не в этом дело. Нет, программа то неплохая, просто я тогда с Питоном то знаком не был и многопоточных регалок не делал, да и прокси не юзал. После Питона как-то смешно даже на XHE смотреть. Не понимаю я, когда говорят, что это МастХэв софт сеошника. Ну да ладно, я ведь смотрю на всё это как программист, а не как сеошник.
Для меня XHE интересен именно как эмулятор браузера, но хочется юзать для этих дел python, да и полный доступ к COM иметь. Сделать это оказалось относительно просто. Ставим win32com и, в принципе, уже можно приступать, но лучше скачать еще обертку IEC, как для удобства так и для просмотра исходного кода по управлению Internet Explorer. Но не всё там есть, к сожалению, а гуглить на тему COM у меня плохо получается. Данная статья должна помочь в написании функций по очистке cookies и кэша. Еще необходима функция для установки proxy, это я выпросил у seocoder‘а. Осталось только реализовать функцию по сохранению изображений с последующей отправкой их на антикапчу. Для этого у меня на данный момент решений нет, но я обязательно к этому вернусь.
Странные cookies гугла.
комментарии: 2
Вот такие вот: __utma=199306621.1164773483.1250671648.1250671648.1250671648.1; __utmb=199306621; __utmc=199306621; __utmz=199306621.1250671648.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
Много раз уже их видел, не придаю им значения, вроде бы это куки для google-analytcs, ну не мешают и ладно, однако один раз помешали. Точнее даже два. Писал регалку, сайт без них выдавал только заголовок, без тела страницы. Я сначала было отчаялся, но потом добавил curl.setopt(pycurl.COOKIE,’вся эта зеленая хрень’) и обманул сайт. Но как-то странно, если у пользователя на этом сайте будет отключен java-script, он подумает что сайт глючит.
Обёртки для pycurl
комментарии: 5
В своё время узнал про две обёртки для pycurl. Первая — grab, вторая — pylibcurl, ctypes обертка не требует установки pycurl‘а. Собственно, я ими даже не пользовался, пытался начать, но забрасывал, зря, конечно. А на данный момент юзать я их тоже не собираюсь, поскольку думаю обворачивать pycurl в собственные классы, нет, не так круто как эти две, а скромненько для своих целей, не для общего пользования. Думаю для каждого SEO-питонщика наступает время, когда он пишет собственную обертку для pycurl=) А если кто-то и искал ООП реализацию pycurl‘a, вот вам целых две на выбор.
Узнаем текущую дату
комментарии: 2
Для получения текущей даты необходимо использовать модуль datetime. Для начала нам необходимо получить объект datetime, содержащий сегодняшнюю дату, затем с помощью метода timetuple мы получаем кортеж, содержащий значение текущего года, месяца, дня и т.д.
import datetime import time now = datetime.datetime.now() # получаем текущую дату #Список дней недели day_of_weeks = {0 : "Monday", 1 : "Tuesday", 2 : "Wednesday", 3 : "Thursday", 4 : "Friday", 5 : "Saturday", 6 : "Sunday"} year, month, day, hour, minutes, sec, wday, yday, isdst = now.timetuple() if month<10: month = "0%s" % month if day<10: day = "0%s" % day if hour<10: hour = "0%s" % hour if minutes<10: minutes = "0%s" % minutes if sec<10: sec = "0%s" % sec today = "Now: {3}:{4}:{5}, {0}.{1}.{2}, {6} "\ .format(day, month, year, hour, minutes, sec,day_of_weeks[wday]) print today
Иногда бывает необходимо узнать количество секунд прошедших от начала отсчета, до текущей даты, делается это следующим образом:
sectime = int (time.mktime(now.timetuple()))
pycurl multipart/form-data
комментарии: 1
Довольно много времени потратил, гуглив на тему, как отправлять данные в формате multipart/form-data. Так ничего полезного не обнаружив, я решил заглянуть в папку test от pycurl’a. Там я и нашел решение.
pf = [('field1', 'value1'), ('field2', 'value2'), ('field3', 'value3') ] c.setopt(c.HTTPPOST, pf)
Оказывается надо передавать список кортежей пар поле-значение для параметра pycurl.HTTPOST. А я пытался реализовать это используя опцию pycurl.POSTFIELDS.