<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Iker Perez de Albeniz &#187; PageRank</title>
	<atom:link href="http://www.ikeralbeniz.net/tag/pagerank/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ikeralbeniz.net</link>
	<description>mi propio egolog sobre tecnología y frikadas varias</description>
	<lastBuildDate>Mon, 26 Apr 2010 15:54:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Consulta tu PageRank de Google con Python</title>
		<link>http://www.ikeralbeniz.net/2010/03/05/contulta-tu-pagerank-de-google-con-python/</link>
		<comments>http://www.ikeralbeniz.net/2010/03/05/contulta-tu-pagerank-de-google-con-python/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 07:17:49 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[PageRank]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=187</guid>
		<description><![CDATA[A todos los que os interese el SEO seguramente habréis consultado alguna vez el <a href="http://www.guia-buscadores.com/posicionamiento/el-pagerank.html">PageRank</a> de vuestra pagina. La forma mas sencilla de obtenerlo es instalando la <a href="http://www.google.com/intl/es/toolbar/ff/index.html">ToolBar de Google</a> en vuestro navegador. Pero seguramente si queréis realizar un seguimiento de vuestra pagina a lo largo del tiempo necesitareis automatizar un proceso que consulte el PageRank. La API de acceso al PageRank de google no es abierta, pero googleando un poco (o con <a href="http://www.wireshark.org/">Wireshark</a>) es posible obtener el modo de consultar este dato. Parece que Google no le interesa que consultemos este dato, por lo que modifica la API bastante a menudo. En este artículo, te muestro una implementación en Python de un cliente para consultar el PageRank de una pagina, usando la API mas actual.]]></description>
			<content:encoded><![CDATA[<p>A todos los que os interese el SEO seguramente habréis consultado alguna vez el <a href="http://www.guia-buscadores.com/posicionamiento/el-pagerank.html">PageRank</a> de vuestra pagina. La forma mas sencilla de obtenerlo es instalando la <a href="http://www.google.com/intl/es/toolbar/ff/index.html">ToolBar de Google</a> en vuestro navegador. Pero seguramente si queréis realizar un seguimiento de vuestra pagina a lo largo del tiempo necesitareis automatizar un proceso que consulte el PageRank. La API de acceso al PageRank de google no es abierta, pero googleando un poco (o con <a href="http://www.wireshark.org/">Wireshark</a>) es posible obtener el modo de consultar este dato. Parece que Google no le interesa que consultemos este dato, por lo que modifica la API bastante a menudo. En este artículo, te muestro una implementación en Python de un cliente para consultar el PageRank de una pagina, usando la API mas actual.</p>
<div class="codesnip-container" >
<div class="python codesnip" style="font-family:monospace;"><span class="co1">#!/usr/bin/env python</span><br />
<span class="co1"># -*- coding: utf-8 -*-</span><br />
<span class="co1"># GPL (C) 2010 Iker Perez de Albeniz</span><br />
<span class="co1"># ported in Python from the Php code by HM2K (http://www.hm2k.com/projects/pagerank)</span><br />
<span class="co1"># http://www.ikeralbeniz.net/2010/03/05/contulta-tu-pagerank-de-google-con-python/</span></p>
<p><span class="kw1">import</span> <span class="kw3">sys</span><br />
<span class="kw1">import</span> <span class="kw3">urllib</span><br />
&nbsp;<br />
<span class="kw1">from</span> <span class="kw3">urllib</span> <span class="kw1">import</span> urlencode<br />
<span class="kw1">from</span> <span class="kw3">pprint</span> <span class="kw1">import</span> <span class="kw3">pprint</span></p>
<p><span class="kw1">def</span> strToNum<span class="br0">&#40;</span>Str, Check, Magic<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; Int32Unit = 4294967296<br />
&nbsp; &nbsp; &nbsp; &nbsp; length = <span class="kw2">len</span><span class="br0">&#40;</span>Str<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> i <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span>0,length<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Check <span class="sy0">*</span>= Magic<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>Check <span class="sy0">&gt;</span>= Int32Unit<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Check = <span class="br0">&#40;</span>Check &#8211; Int32Unit <span class="sy0">*</span> <span class="kw2">int</span><span class="br0">&#40;</span>Check/Int32Unit<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> Check <span class="sy0">&lt;</span> -2147483648:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Check = Check + Int32Unit<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Check += <span class="kw2">ord</span><span class="br0">&#40;</span>Str<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> Check<br />
&nbsp; &nbsp; <br />
<span class="kw1">def</span> hashURL<span class="br0">&#40;</span><span class="kw3">string</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; check1 = strToNum<span class="br0">&#40;</span><span class="kw3">string</span>, 0&#215;1505, 0&#215;21<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; check2 = strToNum<span class="br0">&#40;</span><span class="kw3">string</span>, 0, 0&#215;1003F<span class="br0">&#41;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; check1 <span class="sy0">&gt;&gt;</span>= 2<br />
&nbsp; &nbsp; &nbsp; &nbsp; check1 = <span class="br0">&#40;</span><span class="br0">&#40;</span>check1 <span class="sy0">&gt;&gt;</span> 4<span class="br0">&#41;</span> <span class="sy0">&amp;</span> 0&#215;3FFFFC0 <span class="br0">&#41;</span> | <span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3F<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; check1 = <span class="br0">&#40;</span><span class="br0">&#40;</span>check1 <span class="sy0">&gt;&gt;</span> 4<span class="br0">&#41;</span> <span class="sy0">&amp;</span> 0&#215;3FFC00 <span class="br0">&#41;</span> | <span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3FF<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; check1 = <span class="br0">&#40;</span><span class="br0">&#40;</span>check1 <span class="sy0">&gt;&gt;</span> 4<span class="br0">&#41;</span> <span class="sy0">&amp;</span> 0&#215;3C000 <span class="br0">&#41;</span> | <span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3FFF<span class="br0">&#41;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; T1 = <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3C0<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> 4<span class="br0">&#41;</span> | <span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3C<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span>2 <span class="br0">&#41;</span> | <span class="br0">&#40;</span>check2 <span class="sy0">&amp;</span> 0xF0F <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; T2 = <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0xFFFFC000<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> 4<span class="br0">&#41;</span> | <span class="br0">&#40;</span>check1 <span class="sy0">&amp;</span> 0&#215;3C00<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> 0xA<span class="br0">&#41;</span> | <span class="br0">&#40;</span>check2 <span class="sy0">&amp;</span> 0xF0F0000 <span class="br0">&#41;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span>T1 | T2<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
<span class="kw1">def</span> checkHash<span class="br0">&#40;</span>hashnum<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; checkByte = <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; flag = <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; HashStr = <span class="st0">&#8216;%s&#8217;</span> <span class="sy0">%</span> hashnum<br />
&nbsp; &nbsp; &nbsp; &nbsp; length = <span class="kw2">len</span><span class="br0">&#40;</span>HashStr<span class="br0">&#41;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> i <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span>0,length<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Re = <span class="kw2">int</span><span class="br0">&#40;</span>HashStr<span class="br0">&#91;</span><span class="br0">&#40;</span>length &#8211; 1<span class="br0">&#41;</span>-i<span class="br0">&#93;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>1 == <span class="br0">&#40;</span>flag <span class="sy0">%</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Re += Re<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Re = <span class="kw2">int</span><span class="br0">&#40;</span><span class="br0">&#40;</span>Re / 10<span class="br0">&#41;</span> + <span class="br0">&#40;</span>Re <span class="sy0">%</span> 10<span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkByte += <span class="kw2">int</span><span class="br0">&#40;</span>Re<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flag = flag + 1</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; checkByte <span class="sy0">%</span>= 10<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>0 <span class="sy0">!</span>= checkByte<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkByte = 10 &#8211; checkByte<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>1 == <span class="br0">&#40;</span>flag <span class="sy0">%</span> 2<span class="br0">&#41;</span> <span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>1 == <span class="br0">&#40;</span>checkByte <span class="sy0">%</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkByte += 9<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkByte <span class="sy0">&gt;&gt;</span>= 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&#8216;7%s%s&#8217;</span> <span class="sy0">%</span><span class="br0">&#40;</span>checkByte,HashStr<span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> getCh<span class="br0">&#40;</span>url<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="kw1">return</span> checkHash<span class="br0">&#40;</span>hashURL<span class="br0">&#40;</span>url<span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; response = <span class="st0">&quot;Error: No URL defined.<span class="es0">\n</span>Usage: googrng.py &lt;url&gt; [[proxyuser:proxypass@]proxyhost:poxyport]&quot;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> 1:<br />
&nbsp; &nbsp; &nbsp; &nbsp; myurl = <span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; url = <span class="st0">&quot;http://toolbarqueries.google.es/search?features=Rank&amp;sourceid=navclient-ff&amp;client=navclient-auto-ff&amp;googleip=O;208.117.235.17;97&amp;iqrn=8VdB&amp;querytime=4P&amp;orig=0X557&amp;swwk=-1&amp;ch=%s&amp;q=info:%s&quot;</span> <span class="sy0">%</span><span class="br0">&#40;</span>getCh<span class="br0">&#40;</span>myurl<span class="br0">&#41;</span>,<span class="kw3">urllib</span>.<span class="me1">quote_plus</span><span class="br0">&#40;</span>myurl<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">2</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxies = <span class="br0">&#123;</span><span class="st0">&#8216;http&#8217;</span>: <span class="st0">&#8216;http://&#8217;</span>+<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f = <span class="kw3">urllib</span>.<span class="me1">urlopen</span><span class="br0">&#40;</span>url, proxies=proxies<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f = <span class="kw3">urllib</span>.<span class="me1">urlopen</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; response = f.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; f.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">print</span> response</p>
<p><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp; main<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2010/03/05/contulta-tu-pagerank-de-google-con-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
