Pyppeteer (python) - 在抓取页面后点击标签
Pyppeteer (python) - clink a tag and after scraping the page
我是 Pyppeteer 的新手 (Python),我想知道如何(按顺序):
- 登录页面
- 点击标签
- 从我碰过的标签中取出数据
网站是'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
我是 Pyppeteer 的新手 (Python),我想知道如何(按顺序):
- 登录页面
- 点击标签
- 从我碰过的标签中取出数据
网站是'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