Text mining avec Python-Scraping-

Je traite de l'apprentissage automatique des modèles de travail et ainsi de suite, et d'une manière ou d'une autre, j'étais intéressé par l'exploration de texte, je vais donc le publier comme un mémorandum de ce que j'ai essayé. Cette fois, c'est une édition de scraping, mais à la fin je pense analyser les informations de texte gratté, donc je les posterai au besoin quand elles seront organisées.

Environnement d'exécution

Quand j'ai pensé à gratter avec Python, la première chose qui m'est venue à l'esprit était requests et [BeautifulSoup](http: //). C'était kondou.com/BS4/), donc je vais utiliser cette combinaison cette fois.

D'ailleurs, j'utilise habituellement JSer, donc j'utilise souvent puppeteer pour le scraping. Eh bien, c'est bien, commençons à gratter.

Vérifiez d'abord si cela fonctionne

Bien sûr, lorsque vous écrivez du code en python, vous pouvez l'écrire directement dans le fichier "~ .py", mais si vous utilisez Jupyter Notebook, il existe diverses parties pratiques telles que la visualisation facile du résultat de sortie, alors utilisez Jupyter Notebook pour les tests. Il est recommandé de le faire. Surtout cette fois, je vais tester en utilisant Google Colaboratory fourni par Google. Il n'est pas nécessaire d'installer une bibliothèque, juste un compte Google pour l'exécuter.

** Ouvrez Colaboratory et créez un nouveau bloc-notes ** Ouvrez Colaboratory dans votre navigateur Web et ouvrez Créez un nouveau bloc-notes à partir de Fichier> Nouveau bloc-notes Python 3.

スクリーンショット (49).png

Je ne pense plus avoir besoin de l'expliquer, mais j'écrirai le code dans la cellule de la zone centrale. 2.png

** Importer la bibliothèque **

import


import  requests
from bs4 import BeautifulSoup

** Spécifiez l'URL ** Cette fois, je vais gratter les 10 dernières lignes de l'actualité d'ArchiFuture Web, un site portail pour l'architecture x l'informatique, qui est mon métier. (ArchiFuture)

Spécifiez l'URL


url = "http://www.archifuture-web.jp/headline/457.html"

** Visiter la page à l'aide de demandes ** Voyons si nous pouvons réellement accéder à la page.

Page de visite


res = requests.get(url)
res

Si vous faites cela, vous

réponse


<Response [200]>

Je pense que ce sera retourné. Si vous souhaitez connaître le code de réponse HTTP, veuillez vous référer à ici.

Si vous souhaitez voir le contenu de la page

res.text

réponse


'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n<meta http-equiv="Content-Style-Type" content="text/css" />\n<meta http-equiv="Content-Script-Type" content="text/javascript" />\n<!-- [if lt IE]><meta http-equiv="imagetoolbar" content="no" /><![endif] -->\n<title>"Archi Future 2019" est un grand succès avec le plus grand nombre de visiteurs de l'histoire | Titre | Architecture x Site portail de calcul\u3000Archi Future Web</title>\n<meta name="Description" content="Il s'agit d'un site portail "Archi Future Web" d'architecture x ordinateur." />\n<meta name="keywords" content="Architecture,Calcul,Archi Future">\n<meta property="og:site_name" content="Architecture × Calculのポータルサイト\u3000Archi Future Web">\n<meta property="og:title" content=""Archi Future 2019" est un grand succès avec le plus grand nombre de visiteurs jamais enregistré">\n<meta property="og:type" content="article">\n<meta property="og:description" content="Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu. Le jour de l'événement, le nombre de visiteurs était élevé malgré le mauvais temps de fortes pluies et de vent....">\n<meta property="og:url" content="http://www.archifuture-web.jp/headline/457.html" />\n<meta property="og:image" content="http://www.archifuture-web.jp/headline/img/4/c/4c57dc333a5c9d674ef327289a500800.jpg " />\n<meta property="og:image:width"  content="700" />\n<meta property="og:image:height" content="467" />\n<meta property="og:locale" content="ja_JP">\n<link rel="stylesheet" type="text/css" href="../common/css/import.css" />\n<!-- [if lt IE 9]><link rel="stylesheet" type="text/css" href="../common/css/ie.css" /><![endif] -->\n<script type="text/javascript" src="../common/js/jquery.js"></script>\n<script type="text/javascript" src="../common/js/init.js"></script>\n<script type="text/javascript" src="../common/js/Nav.js"></script>\n</head>\n\n<body id="headline">\n<div id="container">\n<script type="text/javascript">header(\'../\');</script>\n<hr class="hide" />\n\n<h2><img src="img/title.jpg " width="960" height="60" alt="Gros titre"/></h2>\n\n<div id="content">\n<div class="section">\n<div id="mainContent">\n\n<!--========\u3000SNS\u3000========-->\n<div id="sns" class="clearfix">\n<div class="facebook"><div id="fb-root"></div>\n<script>(function(d, s, id) {\n  var js, fjs = d.getElementsByTagName(s)[0];\n  if (d.getElementById(id)) return;\n  js = d.createElement(s); js.id = id;\n  js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&appId=152808698121811&version=v2.0";\n  fjs.parentNode.insertBefore(js, fjs);\n}(document, \'script\', \'facebook-jssdk\'));</script><div class="fb-share-button" data-href="http://www.archifuture-web.jp/headline/457.html" data-layout="button"></div></div>\n<div class="twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-lang="ja" data-count="none">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\'://platform.twitter.com/widgets.js\';fjs.parentNode.insertBefore(js,fjs);}}(document, \'script\', \'twitter-wjs\');</script></div>\n<!-- /#sns --></div>\n\n<!--========\texte u3000\u3000========-->\n\n<div class="page-title">\n<p><img src="img/icon_new.gif" width="112" height="20" alt="Dernières actualités 10 lignes"/></p>\n<h2>"Archi Future 2019" a le plus grand nombre de visiteurs jamais enregistré<br />\r\n Collectez et maintenez avec succès</h2>\n</div>\n<p class="page-data">2019.10.28</p>\n\n<p>Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu.<br />\r\n Le jour de l'événement, malgré le mauvais temps de fortes pluies et de vent<span style="font-size:12px;">、</span>Le nombre de visiteurs est de 5 par rapport à la fois précédente.Augmentation de 4%<br />\r\n5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire.<br />\r\n Diller Scofidio, une société de design américaine bien connue+Discours d'ouverture de Renfro et emplacement actuel des principaux ordinateurs généraux<br />\r\Conception de panneaux par 5 personnes dans une classe longue<span style="font-size:12px;">je</span>Suka<span style="font-size:12px;">Tsu</span>Shi<span style="font-size:12px;">Yo</span>Est<span style="font-size:12px;">、</span>Le lieu agrandi à 600 places est complet<span style="font-size:12px;">、</span>Conception du panneau<span style="font-size:12px;">je</span><br />\r\nSukaTsuShiYoEst席をさらに100席増設するほどの盛況ぶりだ<span style="font-size:12px;">Tsu</span>C'était. Quel cours est le cours / séminaire?<br />\r\n est presque plein<span style="font-size:12px;">、</span>Le hall d'exposition est également visité par un grand nombre de visiteurs<span style="font-size:12px;">、</span>L'ensemble du lieu était très animé et un grand succès<br />\r\nな開催となTsuた。岡田氏と山梨氏の特別対談1、豊田氏と松島氏の特別対談2をはじめ、どの<br />\r\nセTsuShi<span style="font-size:12px;">Yo</span>ンもArchitectureの新しい方向性と明るい未来を感じさせてくれる、充実した内容であTsuた。<br />\r\Le rapport de nArchi Future 2019 sera présenté sur ce site à l'avenir.<br />\r\n<br />\r\n<a href="http://www.archifuture.jp/2019/" target="_blank"><p class="image al_center"><img src="./img/4/c/4c57dc333a5c9d674ef327289a500800.jpg " alt="\u3000「Archi Future 2019」オフjeShiャルサイトのトTsuプページ" width="600" height="400"  /></p><p class="caption">\u3000「Archi Future 2019」オフjeShiャルサイトのトTsuプページ</p></a></p>\n\n<!--========\u3000ナビゲーShiYoン\u3000========-->\n<div id="page-navi" class="clearfix clr">\n<ul>\n<li class="go-top"><a href="../index.html"><span>&gt;</span> トTsuプページに戻る</a></li>\n<li class="go-list"><a href="index.html"><span>&gt;</span>Retour à la liste d'articles</a></li>\n</ul>\n</div>\n\n<!--========\Dernier article u3000\u3000========-->\n<div id="page-new" class="clr">\n<h2>Derniers articles</h2>\n<ul class="list01">\n<li><a href="457.html" target="">"Archi Future 2019" est un grand succès avec le plus grand nombre de visiteurs jamais enregistré<br />\n2019.10.28\u3000<img src="img/icon_new.gif" width="112" height="20" alt="Dernières actualités 10 lignes"/></a></li>\n<li><a href="456.html" target="">Archi Future 2019 se tiendra enfin le 25 demain à la plus grande échelle jamais organisée<br />\n2019.10.24\u3000<img src="img/icon_new.gif" width="112" height="20" alt="Dernières actualités 10 lignes"/></a></li>\n<li><a href="455.html" target="">25 octobre de cette semaine(Argent)`` Archi Future 2019 '' se tiendra à<br />\n2019.10.21\u3000<img src="img/icon_new.gif" width="112" height="20" alt="Dernières actualités 10 lignes"/></a></li>\n</ul>\n</div>\n\n<!--========\bannière premium u3000\u3000========-->\n\r\n<div id="premiumbanner" class="al_center clr">\r\n<a href="http://www.archifuture.jp/2019/" class="premiumbanner-left banner" target="_blank" id="premium-24"><img src="../img_banner/premium/img/8/2/8280d8bb17d4c09e872441a1ba21eae0.png " width="270" height="180" alt="Archi Future 2019"/></a>\r\n<a href="http://www.archifuture.jp/2019/" class="premiumbanner-right banner" target="_blank" id="premium-25"><img src="../img_banner/premium/img/6/a/6ad8af52988f0560acbb6c08377d79f3.png " width="270" height="180" alt="Archi Future 2019"/></a>\r\n</div>\r\n\n\n<!--========\Super bannière rectangle u3000\u3000========-->\n\r\n<p id="superbanner" class="al_center"><a href="http://www.archifuture.jp/2019/" class="banner" id="super-14"><img src="../img_banner/super/img/9/9/99ae81e84701bf687561a0ca026bdef0.png " width="600" height="90" alt="Archi Future 2019"/></a></p>\r\n\n\n<!-- /#mainContent --></div>\n\n<div id="sidebar">\n<!--========\bannière publicitaire u3000\u3000========-->\n\r\n<ul id="banner" class="clr">\r\n<li><a href="https://www.cradle.co.jp/" target="_blank" class="banner" id="default-5"><img src="../img_banner/default/img/2/f/2f1b60f601b0f99e6094e32d7fd0b26d.gif" width="270" height="80" alt="Support logiciel"/></a></li>\r\n<li><a href="https://product.metamoji.com/gemba/eyacho/" target="_blank" class="banner" id="default-24"><img src="../img_banner/default/img/2/8/280e8426c1fb78ee0e67b2d009d7c9d2.gif" width="270" height="80" alt="MetaMoJi"/></a></li>\r\n<li><a href="https://www.izumi-soft.jp/product-category/bim-%E7%A9%BA%E8%AA%BF%E8%A8%AD%E5%82%99%E8%A8%AD%E8%A8%88/" target="_blank" class="banner" id="default-16"><img src="../img_banner/default/img/1/8/18ef602ddf1e9f1e3c5f00a7674725a2.gif" width="270" height="80" alt="イズミShiステム設計様"/></a></li>\r\n<li><a href="http://www.nyk-systems.co.jp/" target="_blank" class="banner" id="default-6"><img src="../img_banner/default/img/3/b/3b747d65472ce7be37b8235fc703432d.gif" width="270" height="80" alt="NYKShiステムズ様"/></a></li>\r\n<li><a href="http://www.pivot.co.jp/" target="_blank" class="banner" id="default-12"><img src="../img_banner/default/img/6/d/6d10409aeb0b2d23bd73b9ccc70cc08d.gif" width="270" height="80" alt="ArchitectureピボTsuト様"/></a></li>\r\n<li><a href="http://www.applicraft.com/" target="_blank" class="banner" id="default-20"><img src="../img_banner/default/img/9/0/90cc824aac1eda2ba2c37046e55dd79c.gif" width="270" height="80" alt="Appcraft"/></a></li>\r\n<li><a href="http://bit.ly/2Bw8tEc" target="_blank" class="banner" id="default-3"><img src="../img_banner/default/img/7/d/7dbe65f17a1bf153277ba5b466580556.jpg " width="270" height="80" alt="グラフjeソフトジャパン様"/></a></li>\r\n<li><a href="https://autode.sk/2TXDSqE" target="_blank" class="banner" id="default-11"><img src="../img_banner/default/img/e/c/ecb06a6b95c9e79935b6a7df88384ab3.jpg " width="270" height="80" alt="Autodesk"/></a></li>\r\n<li><a href="https://licensecounter.jp/aec-collection-bim/" target="_blank" class="banner" id="default-22"><img src="../img_banner/default/img/1/0/10bcd30f085e6ce4dab4b824c64817a6.gif" width="270" height="80" alt="SB C&Mme"/></a></li>\r\n<li><a href="https://www.nvidia.com/ja-jp/design-visualization/industries/architecture-engineering-construction/?nvid=nv-int-pcjp12rrdsfrqr-44523" target="_blank" class="banner" id="default-21"><img src="../img_banner/default/img/d/5/d53b3fe7fec2bc10858a26f88556c8fb.jpg " width="270" height="80" alt="エヌビデjeア様"/></a></li>\r\n<li><a href=" https://www.aanda.co.jp/Vectorworks2019/index.html?utm_source=af&utm_medium=banner&utm_campaign=bnr_20190921" target="_blank" class="banner" id="default-9"><img src="../img_banner/default/img/7/2/72745a704c3abe2513357559102be116.jpg " width="270" height="80" alt="A et A"/></a></li>\r\n<li><a href="http://j-bim.gloobe.jp/" target="_blank" class="banner" id="default-4"><img src="../img_banner/default/img/a/9/a9f022f44cac2878ac5936fcf4b26175.gif" width="270" height="80" alt="Architecte informatique Fukui"/></a></li>\r\n<li><a href="http://www.env-simulation.com" target="_blank" class="banner" id="default-18"><img src="../img_banner/default/img/e/3/e3d7f1694a53705271dc5e751519d0d8.gif" width="270" height="80" alt="環境ShiミュレーShiYoン様"/></a></li>\r\n<li><a href="http://www.f-cadewa.com/" target="_blank" class="banner" id="default-8"><img src="../img_banner/default/img/f/0/f0a5e6fe83e322a2d62a2461855a6c2a.gif" width="270" height="80" alt="富士通四国インフォテTsuク様"/></a></li>\r\n<li><a href="https://www.photoruction.com/?utm_source=afw&utm_medium=banner&utm_campaign=201903" target="_blank" class="banner" id="default-23"><img src="../img_banner/default/img/2/8/28dba36bb5e98ff9a4514ae00e93844b.png " width="270" height="80" alt="フォトラクShiYoン様"/></a></li>\r\n</ul>\r\n<script type="text/javascript">\r\n<!--\r\nvar top_url = \'/\';\r\n//-->\r\n</script>\r\n<script type="text/javascript" src="../common/js/banner_track.js"></script>\r\n\n\n<!-- /#sidebar --></div>\n<!-- /#section --></div>\n<!-- /#content --></div>\n\n<script type="text/javascript">footer(\'../\');</script>\n\n<!-- /#container --></div>\n</body>\n</html>'

Cependant, dans ce cas, du HTML qui est compacté sous forme de données texte est renvoyé, et je ne comprends pas ce que c'est. Utilisons donc Beautiful Soup pour analyser le HTML.

** Utilisez une belle soupe **

perspective html


soup = BeautifulSoup(res.text, 'html.parser')
soup

Voyons le résultat ici

réponse


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html dir="ltr" lang="ja" xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://ogp.me/ns#">

---(réduction)---

<!--========Texte========-->
<div class="page-title">
<p><img alt="Dernières actualités 10 lignes" height="20" src="img/icon_new.gif" width="112"/></p>
<h2>"Archi Future 2019" a le plus grand nombre de visiteurs jamais enregistré<br/>
Collecté et conservé avec succès</h2>
</div>
<p class="page-data">2019.10.28</p>
<p>Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu.<br/>
Le jour de l'événement, malgré le mauvais temps de fortes pluies et de vent<span style="font-size:12px;">、</span>Le nombre de visiteurs est de 5 par rapport à la fois précédente.Augmentation de 4%<br/>
5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire.<br/>
Diller Scofidio, une entreprise de design renommée aux États-Unis+Discours d'ouverture de Renfro et emplacement actuel des principaux ordinateurs généraux<br/>
Conception du panneau par 5 membres de longue date<span style="font-size:12px;">je</span>Suka<span style="font-size:12px;">Tsu</span>Shi<span style="font-size:12px;">Yo</span>Est<span style="font-size:12px;">、</span>Le lieu agrandi à 600 places est complet<span style="font-size:12px;">、</span>Conception du panneau<span style="font-size:12px;">je</span><br/>
Sukashon a un tel succès qu'il ajoutera 100 sièges supplémentaires.<span style="font-size:12px;">Tsu</span>C'était. Quel cours est le cours / séminaire?<br/>
Est presque plein<span style="font-size:12px;">、</span>Le hall d'exposition est également visité par un grand nombre de visiteurs<span style="font-size:12px;">、</span>L'ensemble du lieu était très animé et un grand succès<br/>
Il a eu lieu. Conférence spéciale 1 entre M. Okada et M. Yamanashi, conférence spéciale 2 entre M. Toyoda et M. Matsushima, qui<br/>
Sessie<span style="font-size:12px;">Yo</span>C'était un contenu épanouissant qui m'a fait sentir une nouvelle direction de l'architecture et un avenir radieux.<br/>
Le rapport d'Archi Future 2019 sera présenté sur ce site à l'avenir.<br/>
<br/>
<a href="http://www.archifuture.jp/2019/" target="_blank"><p class="image al_center"><img alt="Première page du site officiel "Archi Future 2019"" height="400" src="./img/4/c/4c57dc333a5c9d674ef327289a500800.jpg " width="600"/></p><p class="caption">Première page du site officiel "Archi Future 2019"</p></a></p>

---(réduction)---

</html>

Il analyse et affiche le HTML de manière agréable.

Accédez aux informations que vous souhaitez obtenir

Puis c'est finalement le sujet principal. Cette fois, nous voulons obtenir le contenu de l'article de 10 lignes, alors voyons d'abord où se trouve le corps de l'article. Vous pouvez le trouver en le comparant à ce qui est écrit, mais s'il s'agit d'un système Web, utilisez les outils de développement pour le trouver.

3.png

Quelque chose comme ça. (Hmm ... id et classe ne sont pas attribués ...)

Si l'identifiant ou la classe est attribué, vous pouvez facilement l'obtenir en le spécifiant à l'aide du sélecteur css, mais cette fois, cela n'existe pas, donc j'obtiendrai toutes les balises p où l'article est écrit. ..

Obtenir la balise p


p_tags = soup.select('p')
p_tags

Résultat d'acquisition de la balise p


[<p><img alt="Dernières actualités 10 lignes" height="20" src="img/icon_new.gif" width="112"/></p>,
 <p class="page-data">2019.10.28</p>,
 <p>Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu.<br/>
Le jour de l'événement, malgré le mauvais temps de fortes pluies et de vent<span style="font-size:12px;">、</span>Le nombre de visiteurs est de 5 par rapport à la fois précédente.Augmentation de 4%<br/>
 5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire.<br/>
Diller Scofidio, une entreprise de design renommée aux États-Unis+Discours d'ouverture de Renfro et emplacement actuel des principaux ordinateurs généraux<br/>
Conception du panneau par 5 membres de longue date<span style="font-size:12px;">je</span>Suka<span style="font-size:12px;">Tsu</span>Shi<span style="font-size:12px;">Yo</span>Est<span style="font-size:12px;">、</span>Le lieu agrandi à 600 places est complet<span style="font-size:12px;">、</span>Conception du panneau<span style="font-size:12px;">je</span><br/>
Sukashon a un tel succès qu'il ajoutera 100 sièges supplémentaires.<span style="font-size:12px;">Tsu</span>C'était. Quel cours est le cours / séminaire?<br/>
Est presque plein<span style="font-size:12px;">、</span>Le hall d'exposition est également visité par un grand nombre de visiteurs<span style="font-size:12px;">、</span>L'ensemble du lieu était très animé et un grand succès<br/>
Il a eu lieu. Conférence spéciale 1 entre M. Okada et M. Yamanashi, conférence spéciale 2 entre M. Toyoda et M. Matsushima, qui<br/>
Sessie<span style="font-size:12px;">Yo</span>C'était un contenu épanouissant qui m'a fait sentir une nouvelle direction de l'architecture et un avenir radieux.<br/>
Le rapport d'Archi Future 2019 sera présenté sur ce site à l'avenir.<br/>
 <br/>
 <a href="http://www.archifuture.jp/2019/" target="_blank"><p class="image al_center"><img alt="Première page du site officiel "Archi Future 2019"" height="400" src="./img/4/c/4c57dc333a5c9d674ef327289a500800.jpg " width="600"/></p><p class="caption">Première page du site officiel "Archi Future 2019"</p></a></p>,
 <p class="image al_center"><img alt="Première page du site officiel "Archi Future 2019"" height="400" src="./img/4/c/4c57dc333a5c9d674ef327289a500800.jpg " width="600"/></p>,
 <p class="caption">Première page du site officiel "Archi Future 2019"</p>,
 <p class="al_center" id="superbanner"><a class="banner" href="http://www.archifuture.jp/2019/" id="super-14"><img alt="Archi Future 2019" height="90" src="../img_banner/super/img/9/9/99ae81e84701bf687561a0ca026bdef0.png " width="600"/></a></p>]

Apparemment, c'est le deuxième (à partir de 0) de la balise p, donc je vais en extraire le texte du deuxième élément.

Obtenir des articles


article = p_tags[2].get_text()
atricle

Résultat d'acquisition d'article


'Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu.\r\n Le jour de l'événement, le nombre de visiteurs était de 5 par rapport à la fois précédente, malgré le mauvais temps de fortes pluies et de vent..Augmentation de 4%\r\n5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire.\r\n Diller Scofidio, une société de design américaine bien connue+Discours d'ouverture de Renfro et emplacement actuel des principaux ordinateurs généraux\r\Lors de la table ronde de 5 personnes de la classe n-long, la salle a été agrandie à 600 places et la journée du panel\r\n Scushion a connu un tel succès qu'il a ajouté 100 sièges supplémentaires. Quel cours est le cours / séminaire?\r\n était presque pleine, la salle d'exposition a été visitée par un grand nombre de visiteurs, et l'ensemble du lieu a été très animé, un grand succès.\r\Il a eu lieu n. Conférence spéciale 1 entre M. Okada et M. Yamanashi, conférence spéciale 2 entre M. Toyoda et M. Matsushima, qui\r\La n-session était également un contenu épanouissant qui nous a fait sentir une nouvelle direction de l'architecture et un avenir radieux.\r\Le rapport de nArchi Future 2019 sera présenté sur ce site à l'avenir.\n\n\u3000 "Archi Future 2019" page d'accueil du site officiel'

Vous vous rapprochez. Alors, effaçons les codes de saut de ligne inutiles.

Extraire uniquement le texte de l'article


lines = [line.strip() for line in text.splitlines()]  #Obtenez uniquement des caractères sans balises
ten_lines_news = lines[0:10]  #Supprimer les pièces inutiles
ten_lines_news

Contenu des actualités en 10 lignes


['Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu.',
 'Le jour de l'événement, le nombre de visiteurs était de 5 par rapport à la fois précédente, malgré le mauvais temps de fortes pluies et de vent..Augmentation de 4%',
 '5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire.',
 'Diller Scofidio, une entreprise de design renommée aux États-Unis+Discours d'ouverture de Renfro et emplacement actuel des principaux ordinateurs généraux',
 'Lors de la table ronde de 5 personnes de la classe longue, la salle s'est agrandie à 600 places était pleine et la journée du panel',
 'Scassion a eu un tel succès qu'il a ajouté 100 autres sièges. Quel cours est le cours / séminaire?',
 'La salle d'exposition était presque pleine et la salle d'exposition était très animée avec un grand nombre de visiteurs.',
 'Il a eu lieu. Conférence spéciale 1 entre M. Okada et M. Yamanashi, conférence spéciale 2 entre M. Toyoda et M. Matsushima, qui',
 'La session était également enrichissante et nous a fait sentir une nouvelle direction de l'architecture et un avenir radieux.',
 'Le rapport d'Archi Future 2019 sera présenté sur ce site à l'avenir.']

Vous l'avez bien. Le point d'excitation est que le nombre d'arrangements est de 10.

Enfin, rassemblez-les en une seule ligne de texte.

Dans un texte


ten_lines_news_text = ""
for line in ten_lines_news:
  ten_lines_news_text += line
ten_lines_news_text

Collectez également des informations autour de l'article

Le véritable plaisir du grattage est d'obtenir beaucoup d'informations à la fois. Lorsque cela se produit, il n'est actuellement pas possible d'identifier les informations qui ont été acquises.

Cette fois, en deux étapes, j'obtiendrai la date à laquelle l'article a été publié et le numéro attribué à l'URL de l'article et je l'utiliserai comme ID d'article. Comme vous pouvez le voir à partir des données qui sont sorties lorsque la balise p a été acquise en une seule fois, la partie date se voit attribuer une classe. Utilisons ceci pour obtenir la date cette fois.

Obtenir la date de publication


date = soup.select('.page-data')[0].string
date

Résultat d'acquisition


'2019.10.28'

Le reste est l'identifiant de l'article, mais l'URL de la page de l'article "http://www.archifuture-web.jp/headline/457.html" Assurez-vous d'utiliser la partie nom du fichier html. (Cette fois, c'est gênant ~~ Écrivons directement l'ID)

ID de l'article


id = 457

Fonctionnalisation du traitement

Transformons le processus créé jusqu'à présent en une fonction.

Les quatre processus de sont combinés en une seule fonction, et lorsque l'URL est saisie, le texte de l'article de 10 lignes est renvoyé.

Fonctionnalisation du traitement



def get_article(url):
  res = requests(url)
  soup = BeautifulSoup(res.text, ‘html.parser’)

  #Obtenir des articles
  p_tags = soup.select(‘p’)
  article = p_tags[2].get_text()
  lines = [line.strip() for line in text.splitlines()]  #Obtenez uniquement des caractères sans balises
  ten_lines_news = lines[0:10]  #Supprimer les pièces inutiles
  
  #Stocker dans un seul texte de données
  ten_lines_news_text = ""
  for line in ten_lines_news:
    ten_lines_news_text += line

  date = soup.select('.page-data')[0].string  #Date et heure de publication
  id = 457 #ID de l'article

  return ten_lines_news_text

Vérifiez si cela peut être exécuté dans le fichier de script python (.py), et s'il peut être exécuté, décrivez les étapes suivantes dans le fichier de script python.

Essayez d'enregistrer dans un fichier CSV

C'est un gaspillage de continuer à obtenir les informations acquises, alors écrivons-les dans le fichier csv. Il existe plusieurs bibliothèques qui gèrent les données csv en python, mais cette fois j'utiliserai des pandas. C'est une bibliothèque que j'aime personnellement car elle est très utile lorsque vous travaillez avec des données de ligne et de colonne.

Préparons d'abord le fichier csv dans lequel écrire (cette fois-ci, créez-le avec le nom txt_data.csv). ~~ articles.csv est plus approprié ... ~~

txt_data.csv


id,date,text

Lisez et écrivez des fichiers à l'aide de pandas.

Écrire dans csv



 csv_file = 'csv/txt_data.csv' 
 df = pd.read_csv(csv_file)
 text = value
 results = pd.DataFrame([id, date, text], columns=['id', 'date', 'text'])
 df = pd.concat([df, results])
 df.to_csv(csv_file, index=False)
 print("success writing to %s" % csv_file)

Données CSV une fois l'écriture terminée


id,date,text
457,2019.10.28,Le 12ème "Archi Future 2019" aura lieu le 25 octobre la semaine dernière.(Argent)A été retenu. Le jour de l'événement, le nombre de visiteurs était de 5 par rapport à la fois précédente, malgré le mauvais temps de fortes pluies et de vent..Augmentation de 4% 5,L'événement a été un grand succès avec 509 visiteurs, le plus grand nombre de visiteurs de l'histoire. Diller Scofidio, une entreprise de design renommée aux États-Unis+Le discours liminaire de Renfro et la table ronde de la classe actuelle des gestionnaires de sites, composée de cinq grands directeurs généraux, étaient pleins et la table ronde a été si réussie que le nombre de sièges a été augmenté de 100. Toutes les conférences et séminaires étaient presque pleins, et la salle d'exposition a été visitée par un grand nombre de visiteurs, et l'ensemble du lieu était très animé et a été un grand succès. Toutes les séances, y compris le dialogue spécial 1 entre M. Okada et M. Yamanashi et le dialogue spécial 2 entre M. Toyoda et M. Matsushima, ont été enrichissants et nous ont fait sentir une nouvelle direction de l'architecture et un avenir radieux. Le rapport d'Archi Future 2019 sera présenté sur ce site à l'avenir.

Vous pouvez maintenant enregistrer les informations acquises sous forme de données csv. La prochaine fois, j'expliquerai comment obtenir tous les articles publiés jusqu'à présent et enregistrer les données texte.

référence

Qiita: Une manière générale d'extraire uniquement les caractères en grattant Python

Recommended Posts

Text mining avec Python-Scraping-
Text mining avec Python ② Visualisation avec Word Cloud
Text mining (pour mémo)
Pythonbrew avec Sublime Text
Text mining avec Python ① Analyse morphologique (re: version Linux)
Analyse des émotions par SMS avec ML-Ask
Jouez avec A3RT (texte suggéré)
GOTO en Python avec Sublime Text 3
Extraction de texte avec AWS Textract (Python3.6)
Activer Python raw_input avec Sublime Text 3
Application GUI facile avec Tkinter Text
Essayez de miner Bitcoin avec le hashlib de Python
Parlez du texte japonais avec OpenJTalk + python
Synthèse vocale de texte de bout en bout à partir d'ESPnet2
Reconnaissance vocale en anglais avec python [speech to text]
Classification de texte non supervisée avec Doc2Vec et k-means
Créer un gros fichier texte avec shellscript
Classification des documents avec texte toch de PyTorch
Essayez de fouiller votre journal avec Python
Filtrage de texte avec des baies naïves de sklearn
Créer une matrice avec PythonGUI (zone de texte)
Lire des caractères dans des images avec Python OCR