Найти - Пользователи
Полная версия: grab и проверка прокси
Начало » Python для новичков » grab и проверка прокси
1
wghost
Проксичекер на grab(взято с хабра):
>>> from grab import Grab, GrabError
from urllib import quote
import re
g = Grab()
g.go('www.google.ru/search?num=100&q=' + quote('free proxy +":8080"'))
rex = re.compile(r'(?:(?:[-a-z0-9]+\.)+)[a-z0-9]+:\d{2,4}')
for proxy in rex.findall(g.drop_space(g.css_text('body'))):
g.setup(proxy=proxy, proxy_type='http', connect_timeout=5, timeout=5)
try:
g.go('google.com')
except GrabError:
print proxy, 'FAIL'
else:
print proxy, 'OK'
g.drop_space выдает ошибку, стало просто rex.findall(g.response.body).
В таком варианте все прокси пишут ‘FAIL’ практически независимо от работоспособности. Может выдать ‘OK’ на нерабочий, но редко. Прям мистика.
Если сделать g.setup(proxy=рабочий_прокси, proxy_type='http', connect_timeout=5, timeout=5), этот прокси нормально чекнется и напишет ‘OK’.

И того по отдельности работает:
g = Grab()
g.go('http://www.domain.com/proxy.txt')
rex = re.compile(r'(?:(?:[-a-z0-9]+\.)+)[a-z0-9]+:\d{2,4}')
proxy = rex.findall(g.response.body)
print proxy
Парсит прокси в формате:
['164.151.129.37:3128', '122.226.113.54:808', '60.216.101.232:808']
И

    g.setup(proxy='nn.nn.nn.nn:8080', proxy_type='http', connect_timeout=5, timeout=5)
try:
g.go('http://domain.com/')
except GrabError:
print 'FAIL'
else:
print 'ok'
Проверяет на работоспособность один прокси.

Нужно совместить, чтобы проверялись прокси из списка. Желателно в несколько потоков.
Singularitty
Ты скопировал код с хабра и хочешь чтобы вместо тебя все зделали ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB