[PYTHON] [Balisage recommandé dans le machine learning # 2] Extension du script de scraping

Hi, this is Chogo again. Today is cool day and good day for programing inside warm home :)

So today topic is Scraping again. before that, I'd like to explain my goal of this series. My goal is building a system for tag suggesting with machine learning of Bayesian method. Learning articles and tags I already put on then checking articles for suggesting tags. I have to many things to learn so I don't know how many articles for the goal, I will do one by one.

Ok so now today's topic is still scraping. article #1 I explained how to scrape articles from Hatenablog. However this script was only for Hatenablog. I have to extend this script for other web sites.

First i'd like to show you modified script.

    scraper = [ 
            ["hatenablog.com","div","class","entry-content"],
            ["qiita.com","section","itemprop", "articleBody"]
            ]
    c = 0
    for domain in scraper:
        print url, domain[0]
        if re.search( domain[0], url):
            break
        c += 1

    response = urllib2.urlopen(url)
    html = response.read()
    
    soup = BeautifulSoup( html, "lxml" )
    soup.originalEnoding
    tag = soup.find( scraper[c][1], {scraper[c][2] : scraper[c][3]})
    text = ""
    for con in tag.contents:
        p = re.compile(r'<.*?>')
        text += p.sub('', con.encode('utf8'))

This script can scrape articles from Hatana Blog and Qiita. Below are tags of Hatena blog and Qiita.

Hatena Blog:

    <div class=entry-contents>
    CONTENTS to SCRAPE!
    </div>

Qiita:

    <div class="col-sm-9 itemsShowBody_articleColumn"><section class="markdownContent markdownContent-headingEnabled js-task-list-container clearfix position-relative js-task-list-enabled" id="item-xxx" itemprop="articleBody">
    CONTENTS to SCRAPE!
    </div>

So with BeautifulSoup, I wrote up like this. Feeding the elements for the soup...

    scraper = [ 
            ["hatenablog.com","div","class","entry-content"],
            ["qiita.com","section","itemprop", "articleBody"]
            ]

then, have the soup!

    tag = soup.find( scraper[c][1], {scraper[c][2] : scraper[c][3]}

Good. now I can get the elements for soup for each web site, I can extend the scrape article on other sites!

Je vais à Umemura. Il fait froid aujourd'hui. Lors d'une journée comme celle-ci, ne jouez pas dehors, programmez simplement dans une pièce chaude.

Bon, c'est une continuation du grattage, mais avant ça, j'aimerais expliquer mon objectif cette fois. L'objectif sera un système d'estimation de balises utilisant l'apprentissage automatique. C'est un substitut pour apprendre les articles mis en signet que j'ai personnellement étiquetés, puis essayer d'estimer les balises qui se trouvaient dans l'article en utilisant la méthode Basian. Il est donc devenu clair qu'il y a beaucoup de choses à retenir au fur et à mesure, il est donc indécis combien de temps cette série se poursuivra. Je me demande si ça va finir.

Eh bien le sujet principal. Ce sera grattage après la dernière fois. La dernière fois, c'était un script pour extraire la partie de l'article du blog Hatena, mais bien sûr, il faut l'extraire de l'article d'autres sites. Par conséquent, il est nécessaire de le modifier pour qu'il soit polyvalent.

Ainsi, vous pouvez voir le script modifié immédiatement.

    scraper = [ 
            ["hatenablog.com","div","class","entry-content"],
            ["qiita.com","section","itemprop", "articleBody"]
            ]
    c = 0
    for domain in scraper:
        print url, domain[0]
        if re.search( domain[0], url):
            break
        c += 1

    response = urllib2.urlopen(url)
    html = response.read()
    
    soup = BeautifulSoup( html, "lxml" )
    soup.originalEnoding
    tag = soup.find( scraper[c][1], {scraper[c][2] : scraper[c][3]})
    text = ""
    for con in tag.contents:
        p = re.compile(r'<.*?>')
        text += p.sub('', con.encode('utf8'))

Ce script extrait la partie entrée du blog Hatena et des articles Qiita. Chaque entrée est entourée des balises suivantes.

Hatena Blog:

    <div class=entry-contents>
    CONTENTS to SCRAPE!
    </div>

Qiita:

    <div class="col-sm-9 itemsShowBody_articleColumn"><section class="markdownContent markdownContent-headingEnabled js-task-list-container clearfix position-relative js-task-list-enabled" id="item-xxx" itemprop="articleBody">
    CONTENTS to SCRAPE!
    </div>

Ensuite, spécifiez la partie requise pour le jugement de balise de Beautiful Soup comme suit.

    scraper = [ 
            ["hatenablog.com","div","class","entry-content"],
            ["qiita.com","section","itemprop", "articleBody"]
            ]

Ensuite, prenez une soupe!

    tag = soup.find( scraper[c][1], {scraper[c][2] : scraper[c][3]}

Ce sera comme ça. Si vous ajoutez les informations de balise du site dont vous souhaitez extraire l'article, vous pouvez l'appliquer à d'autres sites.

C'est tout pour aujourd'hui, mais cette série est toujours en cours.

Recommended Posts

[Balisage recommandé dans le machine learning # 2] Extension du script de scraping
[Balisage recommandé dans le machine learning # 2.5] Modification du script de scraping
[Balisage recommandé pour l'apprentissage automatique # 4] Script d'apprentissage automatique ...?
[Balisage recommandé avec le machine learning # 1] Scraping d'articles de blog Hatena
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Résumé des API recommandées pour l'intelligence artificielle, l'apprentissage automatique et l'IA
Début de l'apprentissage automatique (matériel didactique / informations recommandés)
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Bases de l'apprentissage automatique (mémoire)
Importance des ensembles de données d'apprentissage automatique
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 2)
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 1)
[Apprentissage automatique Python] Recommandation d'utilisation de Spyder pour les débutants (à partir d'août 2020)
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Apprentissage automatique ③ Résumé de l'arbre de décision
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 4)
Informations sur les réunions d'apprentissage automatique pour HRTech
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 5)
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Comment utiliser l'apprentissage automatique pour le travail? 02_Aperçu du projet de développement AI
Un lecteur d'introduction à la théorie de l'apprentissage automatique pour les ingénieurs informatiques a essayé Kaggle
[Exemple d'amélioration de Python] Quel est le site d'apprentissage recommandé pour les débutants en Python?
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 13 Bases du réseau neuronal
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Amplifiez les images pour l'apprentissage automatique avec Python
Premiers pas pour les débutants en apprentissage automatique (IA)
Une introduction à OpenCV pour l'apprentissage automatique
Pourquoi Python est choisi pour l'apprentissage automatique
Méthode d'encodage à chaud "utilisable" pour l'apprentissage automatique
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Conception d'applications Web pour l'apprentissage automatique
Une introduction à Python pour l'apprentissage automatique
[Apprentissage automatique] Liste des packages fréquemment utilisés
Créer un environnement de développement pour l'apprentissage automatique
[Pour les débutants en intelligence artificielle] Parcours d'apprentissage et de référence en apprentissage automatique / programmation en profondeur
Apprentissage automatique
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Un mémorandum de méthode souvent utilisé dans l'apprentissage automatique utilisant scikit-learn (pour les débutants)
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
Classification des images de guitare par apprentissage automatique Partie 1
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Apprentissage automatique du sport-Analyse de la J-League à titre d'exemple-②
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 1
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Divulgation complète des méthodes utilisées dans l'apprentissage automatique
[Python] Collectez des images avec Icrawler pour l'apprentissage automatique [1000 feuilles]
Liste des liens que les débutants en apprentissage automatique apprennent
Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn
À propos du contenu de développement de l'apprentissage automatique (exemple)