发现更大的SEO世界
 找回密码
 注册
搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
发新帖
hwj888,友链。    

python采集百度下拉框关键字

本帖最后由 hwj888 于 2014-12-3 00:41 编辑

问题:
利用z大介绍的百度推广关键词工具采集关键字(账号全新),通过和网站实际关键词和流量的分析,显然百度推广工具已经无法满足需求了。然后对比了下百度下拉框关键词,发现竟比百度推广来的精准,所以才去采集使用,缺点是无法预估日搜索量的大小。针对不同行业,可能百度推广关键词工具出词数不一样。

用法:
将父词放在kw.txt,先采集一遍(如:刀塔传奇),把得得到的结果在次放入kw.txt,两轮下来就差不多了,然后去重,没有考虑到代码效率问题。最后得到的结果如:

代码:
  1. #encoding=utf-8
  2. import pycurl
  3. import StringIO
  4. import urllib
  5. import sys
  6. import json
  7. import codecs
  8. import time
  9. sysCharType = sys.getfilesystemencoding()
  10. def curl(url, debug=False, **kwargs):
  11.         while 1:
  12.                 try:
  13.                         s = StringIO.StringIO()
  14.                         c = pycurl.Curl()
  15.                         c.setopt(pycurl.URL, url)
  16.                         c.setopt(pycurl.REFERER, url)
  17.                         c.setopt(pycurl.FOLLOWLOCATION, True)
  18.                         c.setopt(pycurl.TIMEOUT, 60)
  19.                         c.setopt(pycurl.ENCODING, 'gzip')
  20.                         c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')
  21.                         c.setopt(pycurl.NOSIGNAL, True)
  22.                         c.setopt(pycurl.WRITEFUNCTION, s.write)
  23.                         for k, v in kwargs.iteritems():
  24.                                 c.setopt(vars(pycurl)[k], v)
  25.                         c.perform()
  26.                         c.close()
  27.                         return s.getvalue()
  28.                 except:
  29.                         if debug:
  30.                                 raise
  31.                         continue

  32. kws=open('kw.txt','r').readlines()
  33. for kw in kws:
  34.     print kw+'开始'
  35.     zm=['','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
  36.     for i in range(len(zm)):
  37.         for r in range(len(zm)):
  38.             query=kw+zm[i]+zm[r]
  39.             html = curl('http://suggestion.baidu.com/su?wd='+ urllib.quote_plus(query)+'&json=2')
  40.             time.sleep(0.2)
  41.             sysHtml = html.decode(sysCharType).encode('utf-8')
  42.             kjson=sysHtml[16:]
  43.             kdict=json.loads(kjson,encoding='UTF-8')
  44.             klist=kdict['s']
  45.             f1 = codecs.open('kwlist.txt', 'a',encoding='UTF-8')
  46.             for l in range(len(klist)):
  47.                 f1.write(klist[l]+ '\n')
  48.         print zm[i]+'结束'

  49. print 'ok!!!'
复制代码



ps:最后还是感谢z大,年末事情比较多,没办法立刻前往北京,等明年年初的时候,还有机会的时候,我还是想过去。。
发表于 2014-12-3 00:37:47 |只看大图
回复 收藏
beiwei1937,请到个人资料页面设置个人签名    

a-z,1-9,把百度、360、搜狗的都采一遍,去重。
发表于 2014-12-3 09:00:18
回复 收藏
ZERO,SEO执着爱好者    

zm = 'abcdefghijklmnopqrstuvwxyz'
zm = [''] + [ i for i in zm ]
for a in zm:
    for b in zm:
        print kw + a + b

SEO民工说的这个方法很多情况下不是很合适,如“招聘司机”容易扩展出来,但“司机招聘”就很难做到。建议根据具体需求寻找更合适的方法。
发表于 2014-12-3 12:30:29
回复 收藏
xcl1086,《走进搜索引擎》也没看完,python也放弃了~~~    

怎么使用,我的怎么乱码了?
发表于 2015-1-6 10:17:30
回复 收藏
pinkman,当时就是这样~wp建站~    

xcl1086 发表于 2015-1-6 10:17
怎么使用,我的怎么乱码了?

应该是漏了 #encoding=utf-8这个
发表于 2015-1-6 15:09:18
回复 收藏
xcl1086,《走进搜索引擎》也没看完,python也放弃了~~~    

pinkman 发表于 2015-1-6 15:09
应该是漏了 #encoding=utf-8这个

不是的。我根据网上的改了下可以了,但是这篇吗问题好像很蛋疼。
发表于 2015-1-6 15:26:44
回复 收藏
快速回复 返回顶部 返回列表