Pyppeteer est un package Python permettant de faire fonctionner le navigateur Chrome, qui est un portage de la bibliothèque Puppeteer pour node.js vers Python. Comme il y a peu d'informations sur Pyppereer, il peut être préférable de rechercher avec Puppeteer lors de la recherche.
Blog de l'auteur de Pyppeteer Site des marionnettistes
pip install pyppeteer
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('https://google.com')
if __name__ == "__main__":
asyncio.get_event_loop().run_until_complete(main())
L'exécution de la commande ci-dessus lancera Chronium en mode sans tête, ouvrira le site Google et fermera le navigateur. Chromium n'est installé qu'une seule fois lors de la première importation. Par défaut, Pyppeteer lance le navigateur en mode sans tête.
browser = await launch(headless=False)
Vous pouvez afficher le navigateur en faisant.
#Obtenez le premier élément qui répond aux critères
# page.Également possible avec J
textbox = await page.querySelector('input[aria-label="Chercher"]')
textbox = await page.J('input[aria-label="Chercher"]')
#Obtenez tous les éléments qui remplissent les conditions
# page.Également possible avec JJ
buttons = await page.querySelectorAll('input[aria-label="recherche Google"]')
buttons = await page.JJ('input[aria-label="recherche Google"]')
# page.type(sélecteur,Valeur d'entrée)
#Possible même à partir de l'élément acquis
await page.type('input[aria-label="Chercher"]', 'pyppeteer')
await textbox.type('pyppeteer')
# page.click(sélecteur)
#C'est possible même à partir de l'élément acquis
#Parce que le bouton de recherche de Google doit sélectionner le deuxième élément
#Dois-je l'obtenir avec querySelectorAll?
await page.click('last-child:input[aria-label="recherche Google"]')
await buttons[1].click()
Obtenez-le en exécutant javascript avec page.evaluate.
text = await page.evaluate('elm => elm.getAttribute("name")',textbox)
Comme ci-dessus
elm = await page.J('#hptl')
text = await page.evaluate('elm => elm.innerHTML', elm)
Recommended Posts