• 沒贊了。。。。批量獲取百度站長工具的索引量_SEO交流_SEO前線
    發現更大的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中查看嗎?

    是啊..........................................
     樓主佳哥seo 发表于 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
    回複 收藏
    快速回複 返回頂部 返回列表