Форум сайта python.su
0
Есть скрипт test.py:
# -*- coding: utf-8 -*- import json, requests, sys, time, urllib.request, urllib.parse def title(): print ("\n\t Test script ") print ("\t---------------\n") def usage(): title() print ("\n Usage: python test.py <domain/ip> <searchlist>\n") def timer(): now = time.localtime(time.time()) return time.asctime(now) if len(sys.argv) <= 2: usage() sys.exit(1) else: title() domain = "site:" + sys.argv[1] file_name = sys.argv[2] def showsome(domain): fopen = open(file_name, 'r') counter = 0 for x in fopen.readlines(): counter = counter + 1 google_search = domain + " " + x.strip('\n') query = urllib.parse.urlencode({'q': google_search}) url = ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query) search_response = urllib.request.urlopen(url) search_results = search_response.read().decode("utf-8") results = json.loads(search_results) data = (results['responseData']) if len(data['results']) > 0: print('Total results: %s' % data["cursor"]["estimatedResultCount"]) hits = (data['results']) print ('Top %d hits:' % len(hits)) for h in hits: print ('[+]', h['url']) #print ('For more results, see %s' % data["cursor"]["moreResultsUrl"]) fopen.close() showsome(domain)
C:\Users\User>python C:\test.py example.com "C:\search.txt" Traceback (most recent call last): File "C:\test.py", line 52, in <module> showsome(domain) File "C:\test.py", line 44, in showsome if len(data['results']) > 0: TypeError: 'NoneType' object is not subscriptable
Отредактировано Moi5es (Апрель 24, 2015 09:29:29)
Офлайн
0
содержимое search.txt
inurl:/index.html inurl:/index.php
Офлайн
24
У тебя приходит 400 ответ. А там нет элемента results. Пропустил параметр q в запросе.
Поправь.
url = ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s' % query)Отредактировано ayb (Апрель 24, 2015 09:48:23)
Офлайн
103
>>> a = None >>> a['bad'] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not subscriptable
if data['results'] and len(data['results']) > 0:
Офлайн
0
aybВ запросе всё верно. Если в код вставить строчку
У тебя приходит 400 ответ. А там нет элемента results. Пропустил параметр q в запросе.Поправь.
print(results)
{'responseDetails': 'Suspected Terms of Service Abuse. Please see http://code.go ogle.com/apis/errors', 'responseStatus': 403, 'responseData': None} ...
terabaytТоже самое
if data and len(data) > 0:

Traceback (most recent call last): File "C:\test.py", line 52, in <module> showsome(domain) File "C:\test.py", line 44, in showsome if data['results'] and len(data['results']) > 0: TypeError: 'NoneType' object is not subscriptable
Отредактировано Moi5es (Апрель 24, 2015 10:59:46)
Офлайн
53
Moi5es
в запросе не все верно если
'responseStatus': 403
Офлайн
0
sanderЯ имел ввиду, ошибка возникает, если добавить “q=”
q=
query = urllib.parse.urlencode({'q': google_search}) url = ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query)
Отредактировано Moi5es (Апрель 24, 2015 11:54:10)
Офлайн
24
В запросе всё верно. Если в код вставить строчку
Отредактировано ayb (Апрель 24, 2015 11:58:07)
Офлайн
0
aybсм. комментарий выше
А ты не пробовал читать ?
Офлайн
24
Из вики ( как в URL передавать параметры запроса ):
?параметр_1=значение_1&параметр_2=значение_2&параметр3=значение_3
>>> import requests
>>> query = 'URL'
>>> request = requests.get('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s' % query)
>>> for result in request.json()['responseData']['results']:
... print(result['url'])
...
http://en.wikipedia.org/wiki/Uniform_resource_locator
http://www.webopedia.com/TERM/U/URL.html
https://goo.gl/
http://docs.oracle.com/javase/7/docs/api/java/net/URL.html
>>>
Офлайн