AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租 
查看: 5247|回复: 2

python获得google自动完成下拉框文本

[复制链接]

2

主题

43

广告币

48

积分

初级会员

Rank: 2

积分
48

社区QQ达人

发表于 2013-12-10 21:13:19 | 显示全部楼层 |阅读模式
代码是从国外网站上找的,原来的一些参数不能用了,我调整了一下。
如果觉得有用,给点鼓励。谢谢。
  1. #!/usr/bin/python
  2. #    Copyright (C) 2010 <[email protected]>

  3. import urllib2, sys, getopt, time
  4. import socket
  5. from urllib import quote
  6. from xml.etree.ElementTree import XMLParser
  7. from threading import Thread

  8. print "\n***************************"
  9. print "* Google Suggest Scrapper *"
  10. print "* Coded by ____________      *"
  11. print "* [email protected]        *"
  12. print "***************************\n"

  13. global i
  14. global recursiveLevel
  15. global outputFile
  16. recursiveLevel = 0
  17. outputFile = ''

  18. def usage():
  19.     print "Usage: GoogleSuggest.py [options] \n"
  20.     print "       -k:     Keywords: Keywords to use (separated by #)"
  21.     print "       -f:     File: File to read keywords from (overrides -k)"
  22.     print "       -r:     Recursive level (0-5): Use suggested keywords to get more keywords up to -r times [Default: 0]"
  23.     print "       -t:     Threads: Number of threads (default 5)"
  24.     print "       -o:     Output file: Save keywords found to file\n\n"
  25.     print "Examples:\n"
  26.     print "       GoogleSuggest.py -k keyword1"
  27.     print "       GoogleSuggest.py -k keyword1#keyword2#keyword3 -r 1"
  28.     print "       GoogleSuggest.py -f keyword_file.txt -o keywords_found.txt -t 10"
  29.     sys.exit()

  30. class do(Thread):
  31.     def __init__( self, keyword ):
  32.         Thread.__init__(self)
  33.         self.keyword = keyword
  34.         self.result = []

  35.     def run(self):
  36.         global i
  37.         tmp = []
  38.         tmp2 = []
  39.         for level in range(0, recursiveLevel+1):
  40.             if level == 0:
  41.                 keyword = self.keyword.split()[0]
  42.                 tmp = self.getKeywords(keyword)
  43.             else:
  44.                 seedkeyword = keyword
  45.                 while len(tmp):
  46.                     keyword = tmp.pop(0)
  47.                     if keyword == seedkeyword:
  48.                         continue
  49.                     else:
  50.                         if level<recursiveLevel:
  51.                             tmp2 = self.getKeywords(keyword)
  52.                         else:
  53.                             self.getKeywords(keyword)
  54.                 tmp = tmp2
  55.         time.sleep(0)
  56.         i = i-1

  57.     def getKeywords(self, keyword):
  58.         tmp = []
  59.         url = 'http://clients1.google.com/complete/search?output=toolbar&q='+quote(keyword)
  60.         print url
  61.         response = urllib2.urlopen(url)
  62.         cont = response.read()
  63.         x = XMLParser()
  64.         x.feed(cont)
  65.         tree = x.close()
  66.         for e in tree.findall('CompleteSuggestion'):
  67.             #self.result.append([[keyword], [e.find('suggestion').get('data'), e.find('num_queries').get('int')]])
  68.             self.result.append([[keyword], [e.find('suggestion').get('data')]])
  69.             tmp.append(e.find('suggestion').get('data'))
  70.         return tmp

  71. def startThreads(keywords):
  72.     global i
  73.     i = 0
  74.     threads = []
  75.     ret = []
  76.     while len(keywords):
  77.         try:
  78.             if i<th:
  79.                 keyword = keywords.pop(0)
  80.                 i = i+1
  81.                 thread = do(keyword)
  82.                 thread.start()
  83.                 threads.append(thread)
  84.         except KeyboardInterrupt:
  85.             print 'Suspended by user...\n'
  86.             sys.exit()
  87.         for t in threads:
  88.             t.join()
  89.         for r in t.result:
  90.             ret.append(r)
  91.     output(ret)

  92. def output(ret):
  93.     global outputFile
  94.     output = []
  95.     while len(ret):
  96.         data = ret.pop(0)[1][0]
  97.         output.append(data+'\n')
  98.         print data
  99.     if outputFile:
  100.         try:
  101.                f = open(outputFile,'w')
  102.         except:
  103.             print 'Can\'t open output file\n'
  104.             sys.exit()
  105.         f.writelines(output)
  106.         f.close()

  107. def run(argv):
  108.     global th
  109.     global recursiveLevel
  110.     global outputFile
  111.     th = 5
  112.     if len(sys.argv) < 3:
  113.         usage()
  114.     try:
  115.         opts, args = getopt.getopt(argv,'k:f:r:t:o:')
  116.     except getopt.GetoptError:
  117.         usage()
  118.     for opt,arg in opts :
  119.         if opt == '-k':
  120.             inputKeywords = arg
  121.         elif opt == '-f':
  122.             try:
  123.                 inputFile = open(arg, "r")
  124.             except:
  125.                 print 'Can\'t open keywords file\n'
  126.                 sys.exit()
  127.         elif opt == '-r':
  128.             recursiveLevel = int(arg)
  129.         elif opt == '-t':
  130.             th = arg
  131.         elif opt == '-o':
  132.             outputFile = arg
  133.     try:
  134.       inputFile
  135.     except NameError:
  136.         inputKeywords = inputKeywords.split('#')
  137.     else:
  138.         inputKeywords = inputFile.readlines()
  139.     startThreads(inputKeywords)

  140. if __name__ == "__main__":
  141.     try:
  142.         run(sys.argv[1:])
  143.     except KeyboardInterrupt:
  144.         print "Ctrl+C Exit By USER...\n"
  145.         sys.exit()
复制代码

评分

参与人数 1广告币 +5 收起 理由
河小马 + 5

查看全部评分

相关帖子
回复

使用道具 举报

39

主题

120

广告币

878

积分

版主

Rank: 7Rank: 7Rank: 7

积分
878

社区QQ达人

发表于 2013-12-31 23:45:55 | 显示全部楼层
能看懂一些  模块有些不懂。。。
回复 支持 反对

使用道具 举报

91

主题

445

广告币

705

积分

中级会员

Rank: 3Rank: 3

积分
705
QQ
发表于 2014-9-12 12:55:30 | 显示全部楼层
python的urllib2貌似已经升级了,增加了很多功能。
我的企鹅:2495105662
http://aff.appflood.com/welcome
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2024-11-15 15:38 , Processed in 0.052295 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表