Grattage au sélénium en Python

introduction

Lors d'une conférence universitaire, j'ai eu la tâche d'acquérir le nom de l'invention en fonction de l'élément de recherche de la plateforme d'information sur les brevets et de l'analyser par traitement du langage naturel. D'autres étudiants ont copié toute la source HTML de la page et ont utilisé la fonction Grep d'Excel et l'éditeur pour extraire uniquement ce dont ils avaient besoin. J'ai utilisé python pour l'automatiser, obtenir uniquement ce dont j'avais besoin et même automatiser le processus de création d'un fichier texte. Cette fois-ci, le code de l'époque est également utilisé comme mémorandum de ma part, mais je le publierai.

table des matières

1. Introduction [2. Ce que je voulais faire](#Ce que je voulais faire) [3. Connaissances préalables](# Connaissances préalables) 4. Préparation [5. Code réel](# code réel) [6. Résumé](# Résumé) [7. Document de référence](# document de référence)

Ce que je voulais faire

Obtenez les éléments nécessaires sur la Plateforme d'information sur les brevets et créez un fichier texte.

Connaissances préalables

Je me demande si les connaissances requises pour lire ce code sont les suivantes. --Syntaxe Python de base

Préparation

Si vous ne disposez pas des bibliothèques nécessaires pour utiliser le programme, veuillez l'installer.

>> pip install requests
>> pip install selenium

Vous aurez également besoin d'un chromedriver, donc si vous n'en avez pas, installez-le à partir ici et utilisez le même répertoire que votre programme. Veuillez le mettre.

Code réel

Cliquez ici pour Github

Lors de la mise en œuvre de cette fois, afin d'obtenir toutes les informations de la page cible, il était nécessaire de faire défiler vers le bas de la page et de la charger, j'ai donc utilisé la fonction de défilement pour faire défiler vers le haut. Dans la fonction principale, l'ID au bas de la page est acquis et les noms d'invention pour ce numéro sont acquis. Veuillez consulter ici pour savoir comment obtenir la valeur à partir du HTML. Après avoir récupéré tout le texte, il est enregistré dans le fichier texte.

main.py


"""
Un programme qui récupère les noms d'inventions de brevets à partir de la plateforme d'information sur les brevets
"""
# coding:utf-8
import os
import time

import requests
from selenium import webdriver


def scroll(driver):
    """
Faites défiler la page.
    """
    html01 = driver.page_source
    while 1:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(2)
        html02 = driver.page_source
        if html01 != html02:
            html01 = html02
        else:
            break
            
            
def main():
    """
Accédez à n'importe quel élément de recherche sur la plateforme d'information sur les brevets
Acquérir le nom de l'invention du brevet
    """
    path = os.getcwd()  #Obtenez le répertoire actuel
    #Définir le pilote
    driver = webdriver.Chrome(path + '\\chromedriver')
    #Accéder à la plateforme d'information sur les brevets
    driver.get('https://www.j-platpat.inpit.go.jp/')

    #Définition du mot à rechercher
    print('What are you search?')
    serach_word = input()
    #Définition du nom de fichier à créer
    print('please type a file name')
    file_name = input()

    time.sleep(2)
    driver.find_element_by_name('s01_srchCondtn_txtSimpleSearch').click()
    driver.find_element_by_name('s01_srchCondtn_txtSimpleSearch').send_keys(serach_word)
    driver.find_element_by_name('s01_srchBtn_btnSearch').click()
    time.sleep(5)

    #Défilement de page
    scroll(driver)

    #Obtenez le nombre maximum de ce qui correspond au résultat de la recherche
    id_str = driver.find_elements_by_id('patentUtltyIntnlSimpleBibLst_tableView_numberArea')[-1].text
    id_num = int(id_str)

    words = []
    for i in range(id_num):
        word = driver.find_element_by_id('patentUtltyIntnlSimpleBibLst_tableView_invenName{}'.format(i)).text
        words.append(word)
        print(word)
    print(words)

    #Créer un fichier texte
    with open(file_name, 'w') as f:
        f.write('\n'.join(words))


if __name__ == "__main__":
    main()

Résumé

Cette fois, j'ai présenté comment obtenir des données à partir d'une page Web et les enregistrer dans un fichier texte à l'aide de Selenium en Python. J'espère que cela sera utile pour ceux qui veulent le voir en utilisant Selenium à partir de maintenant.

Document de référence

Recommended Posts

Grattage au sélénium en Python
Grattage avec du sélénium en Python
Scraping avec Selenium en Python (Basic)
Grattage avec du sélénium [Python]
Grattage avec Selenium + Python Partie 1
Grattage avec chromedriver en python
Grattage avec Tor en Python
Grattage avec Selenium + Python Partie 2
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage avec Python
Grattage avec du sélénium
Grattage avec Python, Selenium et Chromedriver
J'étais accro au grattage avec Selenium (+ Python) en 2020
Grattage réussi avec Selenium
Grattage en Python (préparation)
Essayez de gratter avec Python.
Grattage avec Python + PhantomJS
ScreenShot avec Selenium (édition Python)
Pratiquer le web scraping avec Python et Selenium
Scraping avec Python + PyQuery
Scraping RSS avec Python
Connectez-vous à Yahoo Business avec Selenium Python
Réalisez le scraping avec le sélecteur Python et CSS en 1 minute
J'ai essayé de gratter avec Python
Web scraping avec python + JupyterLab
[Python] Scraping dans AWS Lambda
Exploitez LibreOffice avec Python
Grattage festif avec Python, scrapy
Débogage avec pdb en Python
Python: travailler avec Firefox avec du sélénium
Gérer les sons en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Web scraping avec Selenium (Python)
Scraping prévisions météorologiques avec python
[Python + Selenium] Conseils pour le grattage
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Gratter la page i-town avec du sélénium
[Scraping] Scraping Python
Essayez de gratter avec Python + Beautiful Soup
Tester avec des nombres aléatoires en Python
Scraping avec Node, Ruby et Python
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Analyse CSS avec cssutils en Python
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Grattage avec Python et belle soupe
Numer0n avec des objets fabriqués avec Python
Ouvrez UTF-8 avec BOM en Python
Gratter avec une belle soupe en 10 minutes
Utiliser rospy avec virtualenv dans Python3
Ecrire le code de test du sélénium en python
Faisons du scraping d'images avec Python
Utiliser Python mis en pyenv avec NeoVim