{"id":68,"date":"2020-12-28T19:20:09","date_gmt":"2020-12-28T18:20:09","guid":{"rendered":"http:\/\/192.168.178.38\/?p=68"},"modified":"2020-12-28T19:20:09","modified_gmt":"2020-12-28T18:20:09","slug":"ranking-on-searchmachine-with-scrapy","status":"publish","type":"post","link":"https:\/\/lpl-mind.de\/en\/ranking-on-searchmachine-with-scrapy\/","title":{"rendered":"Ranking on Searchmachine with Scrapy"},"content":{"rendered":"<p><strong>Scrapy &#8211; Installation<\/strong> Zum nutzen von Scrapy wird, scrapy mittels pip installiert. Falls eine IDE wie pycharm nutzen dann kann scrapy \u00fcber die IDe interne funktion eingebunden werden.<\/p>\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:700px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\">&nbsp;pip <span class=\"kw2\">install<\/span> scrapy<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p><strong>Scrapy &#8211; Projekt erstellen<\/strong> Um ein Projekt anzulegen liefert Scrapy eine Konsole mit. Hierf\u00fcr rufen sie Folgendes auf. In diesem Beispiel w\u00e4hlen wir den namen rankingtool.<\/p>\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:700px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"bash codecolorer\">scrapy startproject rankingtool <br \/>\n<span class=\"kw3\">cd<\/span> rankingtool<span class=\"sy0\">\/<\/span>rankingtool<span class=\"sy0\">\/<\/span>spiders scrapy genspider spidergoogle google.com<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Scrapy erzeugt automatisch ein Projekt und mittels dem gensider Befehl wird ein Spider ereugt. Der Spider ist die Klasse die explizit, die spezifiziert welche Webseiten geladen werden. Dort werden auch die Informationen gefiltert und Ergebnisobjekte erzeugt.<br \/>\nF\u00fcr unser Projekt ist der Spider die stelle, in der das Ranking ausgelesen wird. Hierf\u00fcr wird zun\u00e4chst die start_requests \u00fcberschieben. Diese wird nach dem Erstellen des Spider ausgerufen. Diese Methode muss ein scrapy FormRequest zur\u00fcckliefern. Mit dessen Hilfe Scrapy den n\u00e4chsten Webseiten aufruf durchf\u00fchrt. Ist dieser durchgef\u00fchrt wird die Methode self.doSearch aufgerufen.<br \/>\nF\u00fcr unser Projekt ist es n\u00f6tig zun\u00e4chst notwenig eine Suchanfrage zu versenden. Dies kann mittels der URL=&#8221;https:\/\/www.google.de\/search?q<searchstring>&#8221; durchgef\u00fchrt werden.<\/searchstring><\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:700px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"python codecolorer\"><span class=\"kw1\">class<\/span> SpidergoogleSpider<span class=\"br0\">&#40;<\/span>scrapy.<span class=\"me1\">Spider<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; name <span class=\"sy0\">=<\/span> \\<span class=\"st0\">'spidergoogle<span class=\"es0\">\\'<\/span><br \/>\n&nbsp; &nbsp; allowed_domains = [<span class=\"es0\">\\'<\/span>google.com<span class=\"es0\">\\'<\/span>]<br \/>\n&nbsp; &nbsp; def start_requests(self):<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; URL = &quot;https:\/\/www.google.de\/search?q=&quot;+self.SearchText<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; self.logger.debug(&quot;Start to call google &quot; + URL )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; request = scrapy.FormRequest(URL , callback=self.doSearch)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; return [request]<br \/>\n&nbsp; &nbsp; def doSearch(self, response):<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; pass<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Das Ergebnis dieses Seitenaufrufs, ist die erste Google-Ergebnis-Seite. Diese wird mittels doSearch in Parameter response \u00fcbermittelt. Dort wird \u00fcberpr\u00fcft ob die gesuchte Seite unter den Ergbnissen ist. Falls nicht wird auf die n\u00e4chste such Seite gewechselt und dieses Ergebnis wieder auf doSearch \u00fcbermittelt. Dadurch wird die doSearch Methode solange aufgerufen bis das n\u00f6tige Seite gefunden wurde oder Google die suche abbricht.<br \/>\nGoogle erlaubt es nicht mehr alle Ergbnisse einzusehen. Typischerweise wird nach der 10 &#8211; 20 Seite keine weiteren Seiten Angeboten.<br \/>\nIm Falle das Suchergebnis ist Vorhanden wird ein neuer scrapy FormRequest erzeugt, welches ein Click simuliert. Die Methode doClick wird dann aufgerufen, sobald die Seite aufgerufen wurde.<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:700px;height:800px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/><\/div><\/td><td><div class=\"python codecolorer\">&nbsp; &nbsp; <span class=\"kw1\">def<\/span> doSearch<span class=\"br0\">&#40;<\/span><span class=\"kw2\">self<\/span><span class=\"sy0\">,<\/span> response<span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; unescaped <span class=\"sy0\">=<\/span> response.<span class=\"me1\">text<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw2\">self<\/span>.<span class=\"me1\">SiteURL<\/span> <span class=\"kw1\">in<\/span> unescaped <span class=\"kw1\">and<\/span> <span class=\"st0\">&quot;onmousedown&quot;<\/span> <span class=\"kw1\">in<\/span> unescaped<span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; reg <span class=\"sy0\">=<\/span> r<span class=\"st0\">&quot;&lt;a<span class=\"es0\">\\\\<\/span>shref=<span class=\"es0\">\\&quot;<\/span>([^<span class=\"es0\">\\&quot;<\/span>]+&quot;<\/span> + <span class=\"kw3\">re<\/span>.<span class=\"me1\">escape<\/span><span class=\"br0\">&#40;<\/span> &nbsp; &nbsp; &nbsp; <span class=\"kw2\">self<\/span>.<span class=\"me1\">SiteURL<\/span><span class=\"br0\">&#41;<\/span> + <span class=\"st0\">&quot;[^<span class=\"es0\">\\&quot;<\/span>]+)<span class=\"es0\">\\&quot;<\/span><span class=\"es0\">\\\\<\/span>sonmousedown=<span class=\"es0\">\\&quot;<\/span>return<span class=\"es0\">\\\\<\/span>srwt<span class=\"es0\">\\\\<\/span>(this,(([^<span class=\"es0\">\\&quot;<\/span>),]+,){8})&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; found<span class=\"sy0\">=<\/span><span class=\"kw3\">re<\/span>.<span class=\"me1\">findall<\/span><span class=\"br0\">&#40;<\/span>reg<span class=\"sy0\">,<\/span>unescaped<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; seite<span class=\"sy0\">=<\/span>found<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; uact <span class=\"sy0\">=<\/span> found<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span>.<span class=\"me1\">split<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;<span class=\"es0\">\\'<\/span>,<span class=\"es0\">\\'<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; usg<span class=\"sy0\">=<\/span>found<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span>.<span class=\"me1\">split<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;<span class=\"es0\">\\'<\/span>,<span class=\"es0\">\\'<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">4<\/span><span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ved <span class=\"sy0\">=<\/span> found<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span>.<span class=\"me1\">split<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;<span class=\"es0\">\\'<\/span>,<span class=\"es0\">\\'<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; params <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;sa&quot;<\/span>:<span class=\"st0\">&quot;t&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;rct&quot;<\/span>:<span class=\"st0\">&quot;j&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;q&quot;<\/span>: <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;esrc&quot;<\/span>: <span class=\"st0\">&quot;s&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;source&quot;<\/span>: <span class=\"st0\">&quot;web&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;cd&quot;<\/span>: <span class=\"st0\">&quot;8&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;cad&quot;<\/span>: <span class=\"st0\">&quot;rja&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;uact&quot;<\/span>: uact<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;ved&quot;<\/span>: ved<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;url&quot;<\/span>: seite<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;usg&quot;<\/span>: usg<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; URL <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;https:\/\/www.google.com\/url?&quot;<\/span> + urlencode<span class=\"br0\">&#40;<\/span>params<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">self<\/span>.<span class=\"me1\">ClickURL<\/span><span class=\"sy0\">=<\/span>URL<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">self<\/span>.<span class=\"me1\">logger<\/span>.<span class=\"me1\">debug<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Start to make click &quot;<\/span> + URL<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; request <span class=\"sy0\">=<\/span> scrapy.<span class=\"me1\">FormRequest<\/span><span class=\"br0\">&#40;<\/span>URL<span class=\"sy0\">,<\/span> callback<span class=\"sy0\">=<\/span><span class=\"kw2\">self<\/span>.<span class=\"me1\">doClick<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#91;<\/span>request<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Es wurden keine mit deiner Suchanfrage&quot;<\/span> <span class=\"kw1\">in<\/span> unescaped<span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw2\">None<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">self<\/span>.<span class=\"me1\">SiteCount<\/span>+<span class=\"sy0\">=<\/span><span class=\"nu0\">10<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; URL <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;https:\/\/www.google.de\/search?q=&quot;<\/span>+<span class=\"kw2\">self<\/span>.<span class=\"me1\">SearchText<\/span>+<span class=\"st0\">&quot;&amp;start=&quot;<\/span>+<span class=\"kw2\">str<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">self<\/span>.<span class=\"me1\">SiteCount<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">self<\/span>.<span class=\"me1\">logger<\/span>.<span class=\"me1\">debug<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Start to call google &quot;<\/span> + URL<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; request <span class=\"sy0\">=<\/span> scrapy.<span class=\"me1\">FormRequest<\/span><span class=\"br0\">&#40;<\/span>URL<span class=\"sy0\">,<\/span> callback<span class=\"sy0\">=<\/span><span class=\"kw2\">self<\/span>.<span class=\"me1\">doSearch<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#91;<\/span>request<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">def<\/span> doClick<span class=\"br0\">&#40;<\/span><span class=\"kw2\">self<\/span><span class=\"sy0\">,<\/span>response<span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">pass<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Das Ergbnis dieses kleinem Tools, ist das hier nun in der lange seit ein akuelles Ranking von einer oder meheren Seiten abzurufen. Dies k\u00f6nnte genutzt werden um gezielt Webseiten zu optimieren. Ferne sollte auch beachtet werden das, dass Ranking vom Agent und vom Cookie abh\u00e4ngig ist. Vorstellbar w\u00e4re ein Tool das ein Ranking einer Seite unter bestimmten Suchergebnissen erfasst.<br \/>\n<strong> Bitte beachten Sie das vortauschen von Clicks strafbar ist. <\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scrapy &#8211; Installation Zum nutzen von Scrapy wird, scrapy mittels pip installiert. Falls eine IDE wie pycharm nutzen dann kann scrapy \u00fcber die IDe interne funktion eingebunden werden. 1&nbsp;pip install scrapy Scrapy &#8211; Projekt erstellen Um ein Projekt anzulegen liefert Scrapy eine Konsole mit. Hierf\u00fcr rufen sie Folgendes auf. In [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-68","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/posts\/68"}],"collection":[{"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":3,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"predecessor-version":[{"id":71,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/posts\/68\/revisions\/71"}],"wp:attachment":[{"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lpl-mind.de\/en\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}