发现更大的SEO世界
 找回密码
 注册

扫一扫,访问微社区

搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
发新帖
GoGo闯,不折腾不舒服斯基    

没赞了。。。。批量获取百度站长工具的索引量

本帖最后由 GoGo闯 于 2014-6-28 23:20 编辑

没赞了听课了。。。。。。
---------------------------------------------------------
由于页面类型较多,挨个抽查收录消耗的时间太长,百度site+inurl出来的数值扯淡的离谱。所以想到用‘百度索引量/页面总量’来估算收录情况,但添加到索引量工具的URL总共有150个左右,挨个查感觉很不爽,所以就整了个脚本。页面总量可以通过读数据库字段来获取,或者sitemap,如果sitemap生成规则是仅有内容的页面写进sitemap,可以理解为有效页面总量。

有些URL得做减法才能得出真实的索引量,比如:'/abc/*.html'包含'/abc/123.html 和 /abc/122p1.html'


  1. #coding:utf-8
  2. #百度站长工具,获取目录索引量

  3. import pycurl
  4. import StringIO
  5. import re
  6. import urllib

  7. head = ['  登陆百度站长工具,在进入查看索引量的页面,把cookie放在这  ']
  8. url_re = 'http://zhanzhang.baidu.com/indexs/index?site=http://www.domain.com'   #domain换成自己的
  9. req = re.compile(r'ruleid="(.*?)"><span.*?rule_suffix">(.*?)</span></td>')
  10. req_data = re.compile(r'{"ctime":".*?","total":"(.*?)","diff":.*?}')

  11. def getHtml(url):
  12.         crl = pycurl.Curl()
  13.         crl.setopt(pycurl.FOLLOWLOCATION,1)
  14.         crl.setopt(pycurl.MAXREDIRS,5)
  15.         crl.setopt(pycurl.HTTPHEADER,head)
  16.         crl.fp = StringIO.StringIO()
  17.         crl.setopt(pycurl.URL, url)
  18.         crl.setopt(crl.WRITEFUNCTION, crl.fp.write)   
  19.         crl.perform()
  20.         html = crl.fp.getvalue()
  21.         return html

  22. html = getHtml(url_re)
  23. data = re.findall(req,html)

  24. for line in data:
  25.         x = list(line)[0]
  26.         y = list(line)[1]

  27. #post = urllib.urlencode({
  28. #'site':'http://www.domain.com/',
  29. #'id':'12027262406916504100',
  30. #'range':'month',
  31. #'page':'1',
  32. #'pagesize':'5'
  33. #})
  34.        
  35.         #domain换成自己的
  36.         url = 'http://zhanzhang.baidu.com/indexs/list?site=http://www.domain.com/&id=%s&range=month&page=1&pagesize=5' % x

  37.         html_data = getHtml(url)
  38.         data = re.findall(req_data,html_data)
  39.         print y,data[0]
  40.        
复制代码



另外附带一份批量添加URL到百度索引工具的脚本,手动添加100多url也很蛋疼的。。。。
  1. #coding:utf-8

  2. import urllib  
  3. import urllib2  
  4. #import cookielib   

  5. hosturl = 'http://zhanzhang.baidu.com/indexs/addrule?site=http://www.domain.com/'    #换domain

  6. #cj = cookielib.LWPCookieJar()  
  7. #cookie_support = urllib2.HTTPCookieProcessor(cj)  
  8. #opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)  
  9. #urllib2.install_opener(opener)  
  10. #h = urllib2.urlopen(hosturl)  

  11. headers = {
  12. "Cookie":"  自己添加一个url,把cookie放在这",
  13. "Host":"zhanzhang.baidu.com",
  14. "Origin":"http://zhanzhang.baidu.com",
  15. "Referer":"http://zhanzhang.baidu.com/indexs/index?site=http://www.domain.com/",    #换domain
  16. "X-Request-By":"baidu.ajax",
  17. "X-Requested-With":"XMLHttpRequest"
  18. }  

  19. def postHtml(url):
  20.         request = urllib2.Request(hosturl, postData, headers)  
  21.         response = urllib2.urlopen(request)  
  22.         text = response.read()  
  23.         return text

  24. #准备一个名为‘post_index.txt’的文件,里面以tab分两列,分别对应百度索引量工具添加url要填写的两部分内容,例子:
  25. #*        abc*p*.html       
  26. #*        a*.html
  27. #*        b*c*/?*

  28. for x in open('post_index.txt'):
  29.         prefix = x.split('        ')[0]
  30.         suffix = x.split('        ')[1]
  31.        
  32.         postData = {
  33.                 "prefix":prefix,
  34.                 "suffix":suffix
  35.         }  
  36.         postData = urllib.urlencode(postData)  
  37.        
  38.         html = postHtml(hosturl)
  39.         print html
复制代码

评分

参与人数 7赞同 +28 收起 理由
hookman + 4 很给力!
豫瞳 + 4 很给力!
叶枫 + 4 解决了俺最近碰到的问题。谢。。.
小乐 + 4
老狼 + 4
born + 4 赞一个!
xiaoyu + 4 这个问题刚好遇到,我也在想site+inurl不准.

查看全部评分

发表于 2014-6-28 23:19:01
回复 收藏
SEO小橙,请到个人资料页面设置个人签名    

请教一个问题,在查看cookie后是将那部分(名称,域。。。)复制到代码中啦?
发表于 2014-6-30 14:31:20
回复 收藏
行书,请到个人资料页面设置个人签名    

SEO小橙 发表于 2014-6-30 14:31
请教一个问题,在查看cookie后是将那部分(名称,域。。。)复制到代码中啦? ...

"Cookie":"  自己添加一个url,把cookie放在这",
翻译一下

"Cookie":"  http:www.xxx.com,cookie值",
发表于 2014-6-30 14:42:49
回复 收藏
苦战,新手上路!    

看不懂的路过。。。。
发表于 2014-6-30 14:53:43
回复 收藏
SEO小橙,请到个人资料页面设置个人签名    

行书 发表于 2014-6-30 06:42
"Cookie":"  自己添加一个url,把cookie放在这",
翻译一下

请问这个cookie值是在浏览器工具的cookie中查看吗?
发表于 2014-7-2 09:12:45
回复 收藏
行书,请到个人资料页面设置个人签名    

SEO小橙 发表于 2014-7-2 01:12
请问这个cookie值是在浏览器工具的cookie中查看吗?

好像是  
先百度 不懂PMzero  我没了解过cookie 所以不做参与
发表于 2014-7-2 09:39:00
回复 收藏
GoGo闯,不折腾不舒服斯基    

SEO小橙 发表于 2014-7-2 01:12
请问这个cookie值是在浏览器工具的cookie中查看吗?

是啊..........................................
 楼主| 发表于 2014-7-2 09:59:15
回复 收藏
nima1215,请到个人资料页面设置个人签名    

收藏了。
发表于 2014-8-5 10:02:13
回复 收藏
豫瞳,希望在前线蜕变    

【伪原创】方便懒人用        闯哥莫怪
【其实我也想混点分。。。。。。。】

  1. #encoding=utf-8
  2. import urllib2,urllib,re
  3. import cookielib
  4. import sys
  5. reload(sys)
  6. sys.setdefaultencoding('utf-8')
  7. URL_BAIDU_INDEX = u'http://www.baidu.com/';
  8. URL_BAIDU_TOKEN = 'https://passport.baidu.com/v2/api/?getapi&tpl=pp&apiver=v3&class=login';
  9. URL_BAIDU_LOGIN = 'https://passport.baidu.com/v2/api/?login';

  10. #设置用户名、密码
  11. username = '账号';
  12. password = '密码';
  13.   
  14. #设置cookie,这里cookiejar可自动管理,无需手动指定
  15. cj = cookielib.CookieJar();
  16. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
  17. urllib2.install_opener(opener);
  18. reqReturn = urllib2.urlopen(URL_BAIDU_INDEX);
  19.   
  20. #获取token,
  21. tokenReturn = urllib2.urlopen(URL_BAIDU_TOKEN);
  22. matchVal = re.search(u'"token" : "(?P<tokenVal>.*?)"',tokenReturn.read());
  23. tokenVal = matchVal.group('tokenVal');
  24.   
  25. #构造登录请求参数,该请求数据是通过抓包获得,对应https://passport.baidu.com/v2/api/?login请求
  26. postData = {
  27.     'username' : username,
  28.     'password' : password,
  29.     'u' : 'https://passport.baidu.com/',
  30.     'tpl' : 'pp',
  31.     'token' : tokenVal,
  32.     'staticpage' : 'https://passport.baidu.com/static/passpc-account/html/v3Jump.html',
  33.     'isPhone' : 'false',
  34.     'charset' : 'UTF-8',
  35.     'callback' : 'parent.bd__pcbs__ra48vi'
  36.     };
  37. postData = urllib.urlencode(postData);
  38.   
  39. #发送登录请求
  40. loginRequest = urllib2.Request(URL_BAIDU_LOGIN,postData);
  41. loginRequest.add_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
  42. loginRequest.add_header('Accept-Encoding','gzip,deflate,sdch');
  43. loginRequest.add_header('Accept-Language','zh-CN,zh;q=0.8');
  44. loginRequest.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko');
  45. loginRequest.add_header('Content-Type','application/x-www-form-urlencoded');
  46. sendPost = urllib2.urlopen(loginRequest);


  47. #测试登陆
  48. #houtai = 'http://zhanzhang.baidu.com/crawltools/index'
  49. # content = urllib2.urlopen(houtai)
  50. #print content.getcode()#测试登陆

  51. #传递数据

  52. def psot(http,prefix,suffix):
  53.    
  54.     login_data ={
  55.         "prefix":prefix,
  56.         "suffix":suffix
  57.         }
  58.     print login_data

  59.     url='http://zhanzhang.baidu.com/indexs/addrule?site=%s'%http
  60.     headers={
  61.         'X-Request-By':'baidu.ajax',#省略也是可以的
  62.         'X-Requested-With':'XMLHttpRequest',
  63.         'Referer':'http://zhanzhang.baidu.com/indexs/index?site=%s'%http,
  64.         }
  65.    
  66.     data= urllib.urlencode(login_data)
  67.     req=urllib2.Request(url,data,headers)
  68.     try:
  69.         reason=urllib2.urlopen(req)
  70.         a=reason.read()
  71.         reason.close()
  72.     except Exception, e:
  73.         print e

  74. #准备一个名为‘post_index.txt’的文件,里面以tab分两列,分别对应百度索引量工具添加url要填写的两部分内容,例子:
  75. #*        abc*p*.html        
  76. #*        a*.html
  77. #*        b*c*/?*
  78. def main(http):
  79.     for x in open('c://1//post_index.txt','r'):
  80.         prefix = x.strip().split('\t')[0]
  81.         suffix= x.strip().split('\t')[1]
  82.         psot(http,prefix,suffix)
  83. if __name__ == '__main__':
  84.     main(http="http://网址")
复制代码

评分

参与人数 1赞同 +4 收起 理由
hookman + 4

查看全部评分

发表于 2014-8-5 18:30:45
回复 收藏
快速回复 返回顶部 返回列表