python - 使用 pyppeteer 创建 for 循环的理想方法

标签 python python-3.x web-scraping pyppeteer

我用 python 结合 pyppeteer 编写了一个脚本,用于从网页上抓取不同咖啡馆的名称及其电话号码。虽然我下面尝试的方法达到了目的,但脚本看起来确实很困惑。使用 pyppeteer 库创建 for 循环的理想方法是什么?

到目前为止我已经写过:

import asyncio
from pyppeteer import launch

url = "https://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los%20Angeles%2C%20CA"

async def get_names(link):
    wb = await launch(headless=True)
    page = await wb.newPage()
    await page.goto(link)

    containers = await page.querySelectorAll('div.v-card')
    for container in containers:
      name = await container.querySelector('.business-name span')
      phone = await container.querySelector('.phones')
      post = await page.evaluate('(element) => element.textContent', name)
      postAno = await page.evaluate('(element) => element.textContent', phone)
      print(f'{post}--{postAno}')

    await wb.close()

asyncio.get_event_loop().run_until_complete(get_names(url))

最佳答案

我会这样做:

import asyncio
from pyppeteer import launch

url = "https://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los%20Angeles%2C%20CA"

async def get_names(link):
    wb = await launch()
    page = await wb.newPage()
    await page.goto(link)

    containers = await page.querySelectorAll('div.v-card')
    for container in containers:
        name = await container.querySelectorEval('.business-name span','e => e.innerText')
        phone = await container.querySelectorEval('.phones','e => e.innerText')
        print(name,phone)

asyncio.get_event_loop().run_until_complete(get_names(url))

关于python - 使用 pyppeteer 创建 for 循环的理想方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53481018/

相关文章:

python - 从 3d numpy 数组中删除 2d 切片

python - 将具有多个自变量和多个参数的函数传递给 scipy optimize minimize

python - 如何使用带有 Python 的 Selenium WebDriver 获取选定的选项?

python - 装饰器的可选 args、kwargs

python - 美丽汤 : can't get ALL the image src

python - 重写一个curl post调用,并根据请求在Python中上传文件

python - 使用 configparser 写入文件时定义 config.ini 条目的顺序?

python - 如何通过传递 Python 中函数返回的列表或元组来对列表进行切片?

javascript - 使用 Jquery 抓取 url

python - 查找所有div,从span中抓取