Maison >développement back-end >Tutoriel Python >Comment utiliser le robot d'exploration Python pour obtenir ces précieux articles de blog
Le contenu de cet article explique comment utiliser le robot d'exploration Python pour obtenir ces précieux articles de blog. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent se référer au contenu de cet article
Auteur CDA Data Analyst
Il existe de nombreux articles de blog techniques merveilleux sur le CSDN , Nous pouvons l'explorer et l'enregistrer sur le disque local, ce qui est très pratique pour lire et apprendre plus tard. Nous allons maintenant utiliser Python pour écrire un code de robot pour atteindre cet objectif.
Ce que nous voulons faire : lire automatiquement les articles de blog, enregistrer les titres et enregistrer les articles favoris dans votre compte personnel. Enregistrez-le sur le disque dur de votre ordinateur pour référence future.
Le processus est grossièrement divisé en les étapes suivantes :
1. Trouvez l'URL cible analysée
2. page Web, recherchez les informations que vous souhaitez enregistrer. Ici, nous enregistrons principalement le contenu des articles de blog
3. sur le disque local.
Ouvrez la page web csdn A titre d'exemple, nous ouvrons aléatoirement une page web :
http://blog.csdn.net/u013088062/article/list/1.
Comme vous pouvez le constater, le blogueur est très intéressé par "C++ Convolutional Neural Network" et d'autres articles sur les ordinateurs machines .Bien écrit.
Le code du robot est divisé en trois catégories (classes) selon l'idée. Les trois suivantes avec "#" donnent le début de chaque classe (le code spécifique est joint pour que chacun puisse l'exécuter et l'implémenter) :
La méthode "class" appartient à la programmation orientée objet de Python, qui est parfois meilleure que la programmation orientée processus que nous utilisons habituellement. , la programmation orientée objet est souvent utilisée dans les grands projets. Pour les débutants, la programmation orientée objet n'est pas facile à maîtriser, mais après l'avoir appris et s'y être habitué, ils passeront progressivement de la programmation orientée processus à la programmation orientée objet.
La note spéciale est que la classe RePage utilise principalement des expressions régulières pour traiter les informations obtenues à partir des pages Web. style de chaîne comme suit :
Utilisez des expressions régulières pour correspondre au contenu à explorer, ce qui peut être réalisé avec Python et d'autres outils logiciels. Il existe de nombreuses règles pour les expressions régulières et chaque logiciel les utilise de la même manière. Faire bon usage des expressions régulières est une partie importante des robots d’exploration et de l’exploration de texte.
La classe SaveText enregistre les informations localement L'effet est le suivant :
Utilisez Python pour écrire du code de robot, qui est simple et efficace. Cet article explique uniquement l'utilisation la plus élémentaire du robot. Les amis intéressés peuvent télécharger le code et y jeter un œil.
Ci-joint le code Python correspondant :
<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 1</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#-*-coding:UTF-8-*-</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 2</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">importer</span> re<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">3</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">importer</span>urllib2<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">4</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">importer</span>sys<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">5</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Objectif : Lisez les articles de blog, enregistrez les titres et enregistrez le contenu des articles au format Htnl </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 6</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># Version : python2.7.13</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 7</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Fonction : Lire le contenu de la page Web</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 8</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">class</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">GetHtmlPage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span> : </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">9</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Notez la casse</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">10</span> <span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">def</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">__init__</span> <span style="font-size:inherit;color:inherit;line-height:inherit;">(self,strPage)</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">11</span> self.strPapge = 🎜><br>13<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> = urllib2 .Request(self.strPapge) </span># Créer une demande de page<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>15<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> rep = req.add_header(</span>"User-Agent"<span style="font-size:inherit;color:inherit;line-height:inherit;">,<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> "Mozilla /5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"</span>)<span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);"><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">16</span> Demande Web<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"></span><br>18<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> page = cn.read() 🎜>"utf-8"</span>) Encodage de pages Web<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>20<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 🎜> </span>sauf<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"> urllib2.URLError, </span>, par exemple CODE <br> 24 <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span> Retour <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);"> </span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"> 25 </span> <br> Sauf <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> Urllib2.httperror, e: </span>#capture anomalie <br> <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span>26<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> </span>retour<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span> 28<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">30</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">classe</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">RePage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">31</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># L'expression régulière extrait le contenu et renvoie la liste chaînée </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">32</span> <span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">def</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">GetReText</span><span style="font-size:inherit;color:inherit;line-height:inherit;">(self,page,recode)</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">33</span> rePage = re.findall(recode,page,re.S)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">34</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">retour</span> rePage<br> <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">35</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Enregistrer le texte</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">36</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">classe</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">Enregistrer le texte</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">37</span> <span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">def</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">Enregistrer</span><span style="font-size:inherit;color:inherit;line-height:inherit;">(soi, texte, inclinaison)</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">38</span> ><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"></span>40<br> via <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> f.close()</span><span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">43</span> <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">sauf</span> IOError,e : <br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">44</span> 🎜><span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">45</span><br>si<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> __name__ == </span>"__main__"<br>:<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">46</span> s = SaveText()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">47</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Encodage des fichiers</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">48</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Les caractères sont correctement décodés</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">49</span> reload(sys)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">50</span> sys.setdefaultencoding( <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">"utf-8"</span> ) <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Obtenir la valeur par défaut du système encodage </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">51</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Obtenir la page Web</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">52</span> page = GetHtmlPage(<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">"http://blog.csdn. net/u013088062/article/list/1"</span>)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">53</span> htmlPage = page.GetPage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">54</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Extraire le contenu</span> <br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">55</span> reServer = RePage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">56</span> reBlog = reServer.GetReText(htmlPage,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">r'<span class="link_title">.*?(s.+?) </span>'</span>) <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Récupérer le lien URL et le titre</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">57</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Descendre pour récupérer le texte</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 58</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">pour</span> ref <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">dans</span> reBlog:<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">59</span> pageHeard = <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">"http://blog.csdn.net/"</span> #Ajouter un lien <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>60<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> strPage = pageHeard+ref[</span>0<span style="font-size:inherit;line-height:inherit;color:rgb(140,208,211);">]</span><br>61<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> tilte=ref[</span>1<span style="font-size:inherit;line-height:inherit;color:rgb(140,208,211);">].replace(</span>'<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">[Top]<span style="color:#FF0000;">'</span>, </span>""<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">) </span>#Utilisez la fonction de remplacement pour supprimer l'anglais complexe <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>62<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> tilte=tilte.replace(</span>"rn"<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">,</span>""<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">).lstrip().rstrip()</span><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">63</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#获取正文</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">64</span> htmlPage = GetHtmlPage(strPage)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">65</span> htmlPageData = ()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">66</span> reBlogText = reServer.GetReText(htmlPageData,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'</span></span></span></span></span>
(.+?)<code style="margin-right:2px;margin-left:2px;padding:.5em;line-height:15px;font-size:11px;word-spacing:-3px;letter-spacing:0px;font-family:Consolas, Inconsolata, Courier, monospace;color:rgb(220,220,220);display:block !important;overflow:auto !important;background:rgb(63,63,63);">(.+?)
')<code style="margin-right:2px;margin-left:2px;padding:.5em;line-height:15px;font-size:11px;word-spacing:-3px;letter-spacing:0px;font-family:Consolas, Inconsolata, Courier, monospace;color:rgb(220,220,220);display:block !important;overflow:auto !important;background:rgb(63,63,63);">')<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">67</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#保存文件</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">68</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">for</span> s1 <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">in</span> reBlogText:<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">69</span> s1=<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'n'</span>+s1<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">70</span> s.Save(s1,tilte)<br>
#保存文件
pour s1 in reBlogText:69
s1=Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!