- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
from xml.sax.saxutils import unescape
HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'}
GOOGLE_RE = re.compile(r'<h3 class="r"><a href="([^"]+)" ')
YANDEX_RE = re.compile(r'<span class="serp-url__mark">.</span><a class="link serp-url__link" target="_blank" href="([^"]+)"')
PROXY_RE = re.compile(r'(\d+\.\d+\.\d+\.\d+)[:\s]+(\d+)')
def search_google(requests_list, qdr=None, interval=2):
res = []
qdr = 'd' if qdr is None or not qdr in ['w', 'd'] else qdr
REQ_FORMAT = 'https://www.google.com/search?q={0}&num=100&tbs=qdr:' + qdr
i = 0
for term in requests_list:
req = REQ_FORMAT.format(term)
response = requests.get(req, headers=HEADERS)
if response.status_code != 200:
print ('Google returned {0}'.format(response.status_code))
time.sleep(interval)
continue
txt = response.text
found = GOOGLE_RE.findall(txt)
res += found
print ('done term {0}, found {1} URLs'.format(i, len(found)))
i += 1
time.sleep(interval)
map(unescape, res)
return res
Древняя граббилка открытых прокси при помощи поисковых систем. Когда-то даже работала.
inho-pidar 01.10.2019 07:21 # +1
Не такая уж древняя
gost 01.10.2019 07:38 # 0
inho-pidar 01.10.2019 07:44 # 0
Кстати, можно настроить requests или другой клиент на то чтобы он кидал исключение при коде не 200? Это вполне ожидаемое поведение.
gost 01.10.2019 07:56 # 0
Есть костыль в виде:
inho-pidar 01.10.2019 08:26 # 0
Хотелось бы даже без этого. Меня это устраивает как поведение по умолчанию. Вот в дотнете всё сделали правильно.
gost 01.10.2019 08:33 # 0
Честно говоря, не уверен, что безусловное выкидывание исключения на не-200 — правильно. Иногда возникают ситуации, когда надо, например, загрузить в том числе и 404-е/500-е страницы. Но вот то, что авторы «requests» не запилили флаг для подобного — цэ говно.
UPD: https://github.com/psf/requests/issues/2152. Какой анскилл (((
inho-pidar 01.10.2019 08:46 # 0
И что теперь делать? Писать свою обертку над requests и таскать ее с собой?
raMagPuJI 04.10.2019 02:14 # 0
Rooster 01.10.2019 07:45 # 0
inho-pidar 01.10.2019 07:47 # 0
gost 01.10.2019 07:59 # 0
guest8 01.10.2019 07:53 # −999
gost 01.10.2019 08:13 # 0
Rooster 01.10.2019 08:09 # +1
gost 01.10.2019 08:14 # +1
gost 01.10.2019 08:16 # 0
gost 01.10.2019 08:16 # 0
inho-pidar 01.10.2019 08:24 # +1
Абсолютно классическое говно - обращение по индексу вместо foreach.
gost 01.10.2019 08:29 # 0
inho-pidar 01.10.2019 08:47 # 0
inho-pidar 02.10.2019 04:31 # 0
inho-pidar 01.10.2019 08:23 # 0
with, да и это не нужно - все сишные методы синхронизированы, так?
gost 01.10.2019 08:29 # +1
inho-pidar 01.10.2019 08:48 # 0
Single-bytecode instructions in Python are atomic
inho-pidar 01.10.2019 08:27 # 0
gost 01.10.2019 08:30 # 0
This. Я тогда не разобрался в тонкостях областей видимости и глобальных пельменных «Питона».
inho-pidar 01.10.2019 08:49 # 0
gost 01.10.2019 09:03 # 0
Rooster 01.10.2019 09:51 # 0