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

扫一扫,访问微社区

搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
发新帖
豫瞳,希望在前线蜕变    

觉得意义不大的东西POST 百度抓取测试

本帖最后由 豫瞳 于 2014-6-14 10:43 编辑

没搞出来,觉得没对劲,出来后觉得 意义不大。
因为:

因为有这效果,所以百度将抓取诊断工具有一定限额,在一定时间内只能抓取300次网页。但效果还可以扩大化。

根据测试,通过抓取诊断工具抓取的页面,其上面的链接往往可以被提取并抓取下一层的网页(但不抓取更多层)。一个页面上至少可以放500个链接,即在抓取诊断工具的限额内,可以促使至少数万页面的快速收录。


直接做好几个集合页面就够了手动提交,因为 企业网站 你能有几个页面。。。。。用不着哦。。。。



一个站长账号下 有很多  认证 网站,一个网站会分配给一个ID,

你要是写错了ID ,出现的结果就是。。。。。。。。。  你的数据 直接跑到认证的 别的网站去。。。。。。
格式就是:

                wwww.seoqx.com
               
                www.你提交的网站。。。。。。
                www.你提交的网站。。。。。。

这个脚本有BUG   ,能用,懒得改啦。。

  1. #encoding=utf-8
  2. import urllib2,urllib,re,string
  3. import cookielib,random
  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 post(http,url,siteid):

  53.     login_data ={
  54.         'url':'%s'%url,
  55.         'type':'pc',#位置
  56.         'sid':'%s'%siteid, #获取百度给予网站从页面提取 ID
  57.         }
  58.     url='http://zhanzhang.baidu.com/crawltools/add?site=%s'%http
  59.     headers={
  60.         'X-Request-By':'baidu.ajax',#省略也是可以的
  61.         'X-Requested-With':'XMLHttpRequest',
  62.         'Referer':'http://zhanzhang.baidu.com/crawltools/index?site=%s'%http,
  63.         }
  64.    
  65.     data= urllib.urlencode(login_data)
  66.     req=urllib2.Request(url,data,headers)
  67.     try:
  68.         reason=urllib2.urlopen(req)
  69.         a=reason.read()
  70.         reason.close()
  71.     except Exception, e:
  72.         print e
  73. def main(http):
  74.     # ip = '220.%s.%s.%s' % (random.randint(100,200), random.randint(100,200), random.randint(100,200))
  75.     zhanzhang = 'http://zhanzhang.baidu.com/crawltools/index?site=%s'%http
  76.     content = urllib2.urlopen(zhanzhang).read()
  77.     s=str(re.findall('(?<=zzSubmitRemain">)[0-9]+',content)).translate(None,string.punctuation)
  78.     print s
  79.     if int(s)>=1:
  80.         siteid=str(re.findall('(?<=siteid:)"[0-9]+',content)).translate(None,string.punctuation)#提取 网站ID
  81.         for line in open(r'c:\\1\\url.txt'):#需要提交的URL地址 网址 记得要加 HTTP://
  82.             post(http,line.rstrip(),siteid)
  83.     else:
  84.         print u"没次数了"
  85.     return
  86. if __name__ == '__main__':
  87.     main(http="http://网址")
复制代码

评分

参与人数 3赞同 +12 收起 理由
AIR_seoqx + 4 赞一个!
姜姜 + 4 不错
张伟 + 4 赞一个!期待更多分享

查看全部评分

发表于 2014-6-13 20:58:08
回复 收藏
快速回复 返回顶部 返回列表