Форум сайта python.su
Привет.
Для собственного развития и тренировки хочется написать простой и быстрый скрипт, который будет обходить урлы из некоторой базы, парсить контент, помещая найденные результаты тоже в базу.
Для простоты - вместо базы я пока просто обхожу урлы из кортежа
Хочется услышать комментарии опытных питонщиков,
и предложения по улучшению
import socket
import threading
PATHS = (“/yandsearch?stype=www&nl=1&text=sex”, “/yandsearch?stype=www&nl=1&text=drugs”, “/yandsearch?text=rock-n-roll&stype=www”)
HOST = “www.yandex.ru”
class MTConn(threading.Thread):
“”“MultiThreads Connector”“”
def __init__(self, path):
self.path = path or “/”
self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
threading.Thread.__init__(self, name = path)
def _gethost(self):
self.soc.connect((HOST, 80))
self.soc.send(“GET %s HTTP/1.0\r\nHost: %s\r\n\r\n” % (self.path, HOST))
return self.soc.makefile().read().decode('cp1251')
def run(self):
print “process: %s \n %s \n\n” % (self.path, self._gethost())
conns =
for conn in conns: conn.start()
Офлайн
Все сделано великолепно ;)
Офлайн
Офлайн
Вместо сокетов лучше urllib использовать. Он и POST поддерживает и работу через прокси. Да и вообще нафига велосипед изобретать когда есть готовое решение?
Офлайн
спасибо, j2a
хороший трэд про многопоточное программирование.
хотя меня смутила строчка:
while threading.activeCount()> 1: time.sleep(1)
Вместо сокетов лучше urllib использовать. Он и POST поддерживает и работу через прокси. Да и вообще нафига велосипед изобретать когда есть готовое решение?Конешно, Вы правы,
urllib2.urlopen('www.ya.ru')
Офлайн
dimik, threading.activeCount()> 1… именно для для того, чтоб основной процесс не заверился раньше тредов.
http://www.intuit.ru/department/pl/python/11/
Офлайн