Pyppeteer (python) - 在抓取页面后点击标签

Pyppeteer (python) - clink a tag and after scraping the page

我是 Pyppeteer 的新手 (Python),我想知道如何(按顺序):

  1. 登录页面
  2. 点击标签
  3. 从我碰过的标签中取出数据

网站是'https://quotes.toscrape.com/login'

我想我设法解决了登录的第一部分。但是,我在第二和第三部分遇到了困难。

如果有人可以通过 python 示例指导我,我将不胜感激。例如,点击 Tags = 'inspirational' 第三个引语(来自 Einstein)并从 'inspirational' 页面中获取所有引语。

import asyncio
import nest_asyncio
nest_asyncio.apply()
from pyppeteer import launch

username = 'AAA'
password = 'BBB'
 
async def main():
 #   browser = await launch(headless=False, args=['--user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'])
    browser = await launch(headless=False)
    page = await browser.newPage()
    await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36')
    await page.goto('https://quotes.toscrape.com/login',)
    
    await page.waitForSelector( '[id="username"]')
    await page.focus('[id="username"]')
    await page.keyboard.type(username)
    
    await page.waitForSelector( '[id="password"]')
    await page.focus('[id="password"]')
    await page.keyboard.type(password)
    
    await asyncio.wait([
    page.click('[type="submit"]'),
    page.waitForNavigation()])
    
    
    
asyncio.get_event_loop().run_until_complete(main())

将此添加到 main()

 page.click('span.tag-item:nth-child(3) > a:nth-child(1)')
 quotelist = page.JJ(".quote") #alias to querySelectorAll()
 quotetext = quotelist.JJeval('.text', '(nodes => nodes.map(n => n.innerText))')
 return quotetext

我是根据他们这里的文档写的https://miyakogi.github.io/pyppeteer/reference.html#browser-class

当然,JS 是一种更好的网页处理语言,所以对于更复杂的东西,我会使用基于 JS 的网络 scrapers