无法使用google API解码JSON对象

2024-06-16 12:17:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python脚本正在搜索thinkgoogle页面以查找特定的内容。例如,url中的Like路径。这是我的密码

import urllib2
import urllib
import json

def search(target):
        num_queries = 50 * 4
        for start in range(0, num_queries, 4):
                dork = 'intext: hacking'
                dork = urllib.urlencode({'q' : dork})
                url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % dork
                for start in range(0, num_queries, 4):
                        request_url = '{0}&start={1}'.format(url, start)
                        search_results = urllib.urlopen(request_url)
                        #try:
                        j = json.loads(search_results.read())
                        #except ValueError:
                        #print "Error: "
                                #continue
                        results = j['responseData']['results']
                        for result in results:
                                title = result['title']
                                url = result['url']
                                if target in url:
                                        print ( '[*]' + url )

def main():
        target = raw_input("Enter target >> ")
        search(target)


if __name__ ==  "__main__":
        main()

在第三个结果之后,我得到没有JSON对象可以解码。以下是整个错误:

^{pr2}$

你知道错误是从哪里来的吗?如何修正它?在


Tags: inimportjsonurltargetforsearchmain
1条回答
网友
1楼 · 发布于 2024-06-16 12:17:07

您正在用返回值重写url。在

在结果下:

url = result['url']

然后循环到顶部:

^{pr2}$

这可能是由于额外的循环。试试这个,不用额外的循环:

def search(target):
        num_queries = 50 * 4
        for start in range(0, num_queries, 4):
                dork = 'intext: hacking'
                dork = urllib.urlencode({'q' : dork})
                url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % dork
                request_url = '{0}&start={1}'.format(url, start)
                search_results = urllib.urlopen(request_url)
                #try:
                j = json.loads(search_results.read())
                #except ValueError:
                #print "Error: "
                #continue
                results = j['responseData']['results']
                for result in results:
                        title = result['title']
                        url = result['url']
                        if target in url:
                                print ( '[*]' + url )

相关问题 更多 >