首页 > 解决方案 > 如何从多个页面抓取数据

问题描述

import os
from webdriver_manager.chrome import ChromeDriverManager
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--start-maximized')
options.page_load_strategy = 'eager'

driver = webdriver.Chrome(options=options)
url = "https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24#MS24"
driver.get(url)
wait = WebDriverWait(driver, 20)

我想找到现金 EPS 的值(独立的和合并的),但主要问题是,页面上只有 5 个值,并且使用箭头按钮检索其他值直到它结束。

如何一次性检索这些值?

标签: pythonpython-3.xpython-2.7web-scrapingselenium-chromedriver

解决方案


基于在浏览此景点时查看 URL

https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24/1#MS24

箭头似乎导航到一个新的 URL,在#符号前面的 URL 中增加一个数字。

因此,浏览页面看起来像这样:

Page1: https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24/1#MS24
Page2: https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24/2#MS24
Page3: https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24/3#MS24
etc...

这些单独的 url 可用于浏览此特定网站。可能这会起作用

def get_pg_url(pgnum):
    return 'https://www.moneycontrol.com/financials/marutisuzukiindia/ratiosVI/MS24/{}#MS24'.format(pgnum)

网络抓取需要调整以适应目标视线。我输入pgnum=10000,这导致Data Not Available for Key Financial Ratios显示文本。当没有剩余页面时,您可能可以使用此文本告诉您。


推荐阅读