Essayez d'utiliser Selenium

Première expérience au sélénium

J'ai dû gratter des sites avec des éléments dynamiques, donc je n'avais pas d'autre choix que de commencer à apprendre Selenium.

pip install selenium

Étant donné que le navigateur souhaite utiliser Chrome, téléchargez le pilote Chrome et déplacez-le sous l'environnement virtuel. J'ai déménagé dans / bin.

https://sites.google.com/a/chromium.org/chromedriver/downloads

Je vais essayer de voir si cela fonctionne immédiatement. La vérification utilise Yahoo! Comme URL.

test.py


import os
import time
from selenium import webdriver

DRIVER_PATH = os.path.join(os.path.dirname(__file__), 'chromedriver')
browser = webdriver.Chrome(DRIVER_PATH)
browser.get('https://www.yahoo.co.jp')

try:
    elem_1 = browser.find_element_by_class_name('emphasis')
    print ('<{}>Découvrir!'.format(elem_1.text))
    time.sleep(3)
except:
    print ('Non')
(flaskworks) $ python test.py
<PIB année 1.0%Révision à la baisse pour augmenter
Photo incohérente NOUVEAU à la réponse du premier ministre
Témoignage en colère d'un oncle suspect terroriste britannique
Mont Fuji à Gunma?Photo de nom de station trompeuse NOUVEAU
Ancien Idol Bartender Non.1 photo
Tanaka apprend la langue Photo d'excuses du commentateur NOUVEAU
Honda Photo de tabagisme passif immédiatement après le match
Yamazaki Anna Photo qui admet sortir avec Obata NOUVEAU>Découvrir!

Confirmez qu'il fonctionne en toute sécurité. J'essaierai également de tourner les pages.

test.py


import os
import time
from selenium import webdriver

DRIVER_PATH = os.path.join(os.path.dirname(__file__), 'chromedriver')
browser = webdriver.Chrome(DRIVER_PATH)
browser.get('https://www.yahoo.co.jp')

try:
    link_elem = browser.find_element_by_link_text('En savoir plus')
    link_elem.click()
    text_elem = browser.find_element_by_class_name('ttl')
    print (text_elem.text)
    time.sleep(3)
except:
    print ('Non')
(flaskworks)$ python test.py
La Corée du Nord lance un projectile inconnu

cette? Vous ne pouvez obtenir qu'un seul cas.

link_elem = browser.find_element_by_class_name('list')

Une fois réécrit,

(flaskworks) $ python test.py
La Corée du Nord lance un projectile inconnu
international
6/8(bois) 7:42
Nishikiori vaincu le regret est un tie-break
Des sports
6/8(bois) 5:10
Nishikiori contre la défaite
Des sports
6/8(bois) 2:12
Signes de lancement de missiles balistiques nord-coréens
international
....Omis ci-dessous

Je vois. C'est peut-être plus facile que Beautiful Soup.

Personnalisé qui patrouille automatiquement sur plusieurs pages

C'est juste un ajout grossier de paramètres de page. Après tout, j'ai cliqué sur Suivant, donc ce n'est pas beau comme processus. Je pense qu'il existe un meilleur moyen, mais c'est la limite car ce n'est que le début.

test.py


import os
import time
from selenium import webdriver

DRIVER_PATH = os.path.join(os.path.dirname(__file__), 'chromedriver')
browser = webdriver.Chrome(DRIVER_PATH)
url = 'https://news.yahoo.co.jp/list/?c=domestic&p='

a = 0
i = 1
while a < 5:
    a += 1
    try:
        browser.get(url)
        link_elem = browser.find_element_by_link_text('prochain')
        link_elem.click()
        text_elem = browser.find_element_by_css_selector('.list')
        print (text_elem.text)
        time.sleep(3)
        i += 1
        url = 'https://news.yahoo.co.jp/list/?c=domestic&p=' + str(i)
    except:
        print ('Non')

Recommended Posts

Essayez d'utiliser Selenium
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
Essayez d'utiliser PythonTex avec Texpad.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'image Docker de Jupyter
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser matplotlib avec PyCharm
Essayez d'utiliser Azure Logic Apps
Essayez d'utiliser Kubernetes Client -Python-
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser l'API Twitter
sélénium
Commencez à Selenium en utilisant python
Essayez d'utiliser AWS SageMaker Studio
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser l'API Twitter
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser la fonction de modèle de Django
Web scraping avec Selenium (Python)
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser la fonction de brouillon de Pelican
Essayez d'utiliser pytest-Overview and Samples-
Essayez Selenium Grid avec Docker
Essayez d'utiliser le folium avec anaconda
Essayez d'utiliser l'API Admin de la passerelle Janus
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Essayez d'utiliser Spyder inclus dans Anaconda
Essayez d'utiliser des modèles de conception (édition exportateur)
Essayez d'utiliser Pillow sur iPython (partie 2)
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'utiliser pynag pour configurer Nagios
Essayez d'utiliser la fonction de débogage à distance de PyCharm
Essayez d'utiliser ArUco avec Raspberry Pi
Essayez d'utiliser LiDAR bon marché (Camsense X1)
[Serveur de location Sakura] Essayez d'utiliser flask.
Essayez d'utiliser Pillow sur iPython (partie 3)
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
Essayez d'obtenir des statistiques en utilisant e-Stat
Essayez d'utiliser l'API d'action de Python argparse