【问题标题】:Pyppeteer (python) - clink a tag and after scraping the pagePyppeteer (python) - 点击标签并在抓取页面后
【发布时间】:2023-03-29 03:32:01
【问题描述】:

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

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

网站是“https://quotes.toscrape.com/login”

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

感谢是否有人可以通过 python 示例指导我。例如,在第三个引号(爱因斯坦)下点击 Tags = 'inspirational' 并从“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())

【问题讨论】:

  • 您正在使用 css 选择器选择项目,对吧?

标签: python web-scraping pyppeteer


【解决方案1】:

将此添加到 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-classhttps://miyakogi.github.io/pyppeteer/reference.html#browser-class这里的文档写的

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

【讨论】:

  • “feedhandle”出现错误(未定义名称“feedHandle”)。我该如何解决?
  • @Omerge 对不起,我忘了重命名变量名。立即尝试。
  • 嘿,非常感谢。不幸的是,我仍然面临一个错误......错误是'coroutine'对象没有属性'JJeval'......我相信'page.JJ'开始也有一个错误......这是我需要的模块为“JJ”安装?
  • @Omerge 页面。JJ 是 pyppeteer 模块中的一个函数。
  • @Omerge 现在怎么样?如果你愿意,我可以给你我开始使用的 JS 代码。
猜你喜欢
  • 2013-12-04
  • 2023-04-03
  • 2021-09-20
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2014-05-11
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多