WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques

Contenu de cet article

Le grattage WEB, le bouche-à-oreille et les critiques sont extraits de l'importation de MeCab et de Beautiful Soup. Faisons un nuage de mots et visualisons ce qui est écrit! C'est le contenu.

Pouvoir

Par exemple, le «bouche-à-oreille» de Trip Advisor peut être utilisé comme un nuage de mots (visualisation de mots fréquemment utilisés ≒ sujets que de nombreuses personnes prennent la peine de mentionner dans le bouche-à-oreille). Il peut être intéressant de voir la différence en comparant la visualisation de Tokyo Tower et Sky Tree, et de Tokyo Tower et Tsutenkaku. .. .. C'est l'idée.

Tokyo_tower.jpg Faites quelque chose comme ça à partir du "bouche à oreille" dans le cadre rouge. wordcloud_TT.jpg

Sites et articles auxquels j'ai fait référence

J'ai essayé le scraping WEB pour la première fois et j'ai même créé wordcloud, mais je vais vous présenter le site auquel j'ai fait référence à l'époque. Grattage du site d'avis pour connaître le nombre de mots [Pour les débutants] Essayez le web scraping avec Python Les ingénieurs actifs expliquent comment utiliser MeCab avec Python [pour les débutants] Utilisation de wordcloud avec Anaconda / Jupyter sous Windows (Astuces)

Installation de la bibliothèque

Tout d'abord, installez les bibliothèques requises. (Si vous l'avez déjà, veuillez l'ignorer.) Au fait, mon environnement est Windows 10, Anaconda (jupyter). Beautiful Soup、request、wordcloud Lancez Ancaonda Prompt et installez «Beautiful Soup» et «request».

conda install beautifulsoup4
conda install request
conda install -c conda-forge wordcloud

MeCab Téléchargez et installez "Paquet binaire pour MS-Windows" à partir du Site officiel. Dans ce cas, le dictionnaire est inclus depuis le début. Si vous vous y habituez, vous pouvez le remplacer par un autre dictionnaire. Il vous sera demandé le code de caractère lors de l'installation, mais à "UTF-8"! D'autres peuvent être laissés tels quels. Une fois l'installation terminée, définissez les variables d'environnement. · Rechercher des "détails du système" (probablement dans la fenêtre de recherche en bas à gauche de la barre des tâches) -Sélectionnez "Variables d'environnement" -Sélectionnez la variable d'environnement système "Path" -Cliquez sur Modifier et sélectionnez Nouveau -Entrez "C: \ Program Files (x86) \ MeCab \ bin" ・ Sélectionnez OK et fermez l'écran Les ingénieurs actifs expliquent comment utiliser MeCab avec Python [pour les débutants] a une procédure, alors jetez-y également un œil.

Production d'ici

Maintenant que les préparatifs sont terminés, écrivons le code à partir d'ici. Première importation

import requests
from bs4 import BeautifulSoup
import re
import pandas as pd

Une fois que vous avez fait cela, accédez au site que vous souhaitez gratter. Dans cet exemple, Page de la tour de Tokyo de Trip advisor. Vérifiez les deux points suivants. ・ URL ・ Où est le code HTML que vous voulez gratter (bouche à oreille cette fois)?

Tout d'abord, vous pouvez voir l'URL telle quelle, je vais donc omettre l'explication. Ce dernier appuie sur "F12" pour lancer les outils de développement. Untitled.jpg Une fenêtre comme celle ci-dessus apparaîtra. De là, vous pouvez voir où et comment les avis sont stockés.

C'est facile à vérifier, cliquez sur "Maj + Ctrl + C" puis CLIQUEZ sur la partie bouche à oreille de l'article. Ensuite, la pièce correspondante est sélectionnée dans la fenêtre précédente. Untitled2.jpg Vous pouvez voir que les avis sont stockés dans la classe q "IRsGHomP".

Après cela, spécifiez cette URL et cet emplacement dans le code et exécutez le scraping.

#Avis grattés par DF_Stocker dans la liste
df_list = [] 
#Grattage pour 20 pages.
pages = range(0, 100, 5)

for page in pages:
#Comme l'URL est légèrement différente entre la première page et la deuxième page et les suivantes, branchez par IF
    if page == 0:
        urlName = 'https://www.tripadvisor.jp/Attraction_Review-g14129730-d320047-Reviews-Tokyo_Tower-Shibakoen_Minato_Tokyo_Tokyo_Prefecture_Kanto.html'
    else:
        urlName = 'https://www.tripadvisor.jp/Attraction_Review-g14129730-d320047-Reviews-or' + str(page) + '-Tokyo_Tower-Shibakoen_Minato_Tokyo_Tokyo_Prefecture_Kanto.html'

    url = requests.get(urlName)
    soup = BeautifulSoup(url.content, "html.parser")
    
#Classe de balise q depuis HTML'IRsGHoPm'Spécifier
    review = soup.find_all('q', class_ = 'IRsGHoPm')

#Stockez les avis extraits dans l'ordre
    for i in range(len(review)):
        _df = pd.DataFrame({'Number':i+1,
                            'review':[review[i].text]})
        
        df_list.append(_df)

À ce stade, df_list doit contenir:

df_review = pd.concat(df_list).reset_index(drop=True)
print(df_review.shape)
df_review

Untitled3.jpg

Créer un nuage de mots

Tout d'abord, importez MeCab et WordCloud

import MeCab
import matplotlib.pyplot as plt
from wordcloud import WordCloud

Entrez le code en vous référant à Grattage du site d'avis pour rechercher le nombre de mots.

#Préparation MeCab
tagger = MeCab.Tagger()
tagger.parse('')

#Combinez toutes les données textuelles
all_text= ""
for s in df_review['review']:
    all_text += s

node = tagger.parseToNode(all_text)

#Extraire la nomenclature pour lister
word_list = []
while node:
    word_type = node.feature.split(',')[0]
    if word_type == 'nom':
        word_list.append(node.surface)
    node = node.next

#Convertir la liste en chaîne
word_chain = ' '.join(word_list)

Tout ce que vous avez à faire est d'exécuter wordcloud et c'est ok.

#Créer des mots vides (mots à exclure)
stopwords = ['']

#Création de nuage de mots
W = WordCloud(width=500, height=300, background_color='lightblue', colormap='inferno', font_path='C:\Windows\Fonts\yumin.ttf', stopwords = set(stopwords)).generate(word_chain)

plt.figure(figsize = (15, 12))
plt.imshow(W)
plt.axis('off')
plt.show()

Ensuite, il sera créé comme suit. wordcloud_TT.jpg

Cependant, "non", "koto" et "apprivoiser" ne sont pas nécessaires, je vais donc les supprimer. C'est là qu'intervient le mot-clé ci-dessus.

#Créer des mots vides (mots à exclure)
stopwords = ['de', 'chose', 'Pour']

#Création de nuage de mots
W = WordCloud(width=500, height=300, background_color='lightblue', colormap='inferno', font_path='C:\Windows\Fonts\yumin.ttf', stopwords = set(stopwords)).generate(word_chain)

plt.figure(figsize = (15, 12))
plt.imshow(W)
plt.axis('off')
plt.show()

Ensuite, ce sera comme suit. Untitled4.jpg

Je peux comprendre quelque chose, je ne comprends rien. .. .. Qu'il y ait beaucoup de gens qui le comparent avec Sky Tree ou que beaucoup de gens disent "Je peux voir Sky Tree", il ne fait aucun doute que "Sky Tree" intéresse les utilisateurs de la Tokyo Tower. Ça y ressemble. Par conséquent, le bouche-à-oreille de Sky Tree est également un nuage de mots ci-dessous.

Untitled5.jpg

Ici, des mots comme «ascenseur» et «billet» qui n'étaient pas beaucoup mentionnés dans la tour de Tokyo (les lettres n'étaient pas grandes) ressortent. De plus, "Tokyo Tower" n'est pas perceptible. Cette zone semble être la différence entre Tokyo Tower et Sky Tree.

fin.

Supplément

Il peut être intéressant de comparer votre entreprise avec la concurrence sur les sites de bouche à oreille d'entreprise tels que Open Work. Il semble qu'il y ait des choses qui peuvent être vues en comparant des installations similaires, comme une comparaison de bouche à oreille des cinq principaux dômes du dôme de Sapporo, du dôme de Tokyo, du dôme de Nagoya, du dôme d'Osaka et du dôme de Fukuoka. À propos, le scraping des travaux ouverts nécessite des paramètres d'en-tête. Voir ci-dessous pour plus de détails. [Python] 403 Forbidden: Que faire lorsque vous n'avez pas la permission d'accéder sur ce serveur

Recommended Posts

WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Faisons un outil de veille de commande avec python
Si vous essayez de créer un nuage de mots avec des commentaires de mangas WEB, il est intéressant de comprendre visuellement de quel genre de manga il s'agit.
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Créez le nuage de mots de Qiita à partir de l'historique de votre navigateur
Effectuez une recherche Twitter à partir de Python et essayez de générer des phrases avec la chaîne de Markov.
Fractal pour faire et jouer avec Python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Essayez de créer un type de service Web avec un langage de balisage 3D
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Essayez le scraping HTML avec la bibliothèque Python
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Créez un framework Web avec Python! (1)
Pratiquer le web scraping avec Python et Selenium
Scraping Web facile avec Python et Ruby
Créez un framework Web avec Python! (2)
[Pour les débutants] Essayez le web scraping avec Python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
2.Faites un arbre de décision à partir de 0 avec Python et comprenez-le (2. Bases du programme Python)
Essayez de créer un logiciel de capture aussi précis que possible avec python (2)
Essayez de créer foldl et foldr avec Python: lambda. Aussi mesure du temps
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Je souhaite créer une application Web en utilisant React et Python flask
Grattage de la nourriture avec python et sortie en CSV
Essayez-le avec JupyterLab en Python japonais Word Cloud.
Essayez de dessiner une courbe de vie avec python
[Python] Flux du scraping Web à l'analyse des données
Lancer un serveur Web avec Python et Flask
Extraire des données d'une page Web avec Python
Essayez de gratter avec Python.
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Essayez d'embellir avec Talking Head Anime à partir d'une seule image [préparation python]
Créons une application Web de conversion A vers B avec Flask! De zéro ...
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Essayez de créer un module Python en langage C
(Python) Essayez de développer une application Web en utilisant Django
Racler votre article Qiita pour créer un nuage de mots
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Essayez de créer un jeu simple avec Python 3 et iPhone
De l'achat d'un ordinateur à l'exécution d'un programme sur python
Web scraping avec python + JupyterLab
Faites une loterie avec Python
Web scraping débutant avec python
API Nifty Cloud facile à utiliser avec botocore et python
Essayez de le faire avec GUI, PyQt en Python
Associez Python Enum à une fonction pour la rendre appelable
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
J'ai créé un outil pour créer un nuage de mots à partir de wikipedia
Exploration Web, scraping Web, acquisition de caractères et sauvegarde d'image avec python
Hash avec python et échapper à l'égosa d'un certain ministre
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
Essayez simplement de recevoir un webhook avec ngrok et Python