python - 如何从多个页面抓取数据
问题描述
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 个值,并且使用箭头按钮检索其他值直到它结束。
如何一次性检索这些值?
解决方案
基于在浏览此景点时查看 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
显示文本。当没有剩余页面时,您可能可以使用此文本告诉您。
推荐阅读
- django - 从 wagtailstreamforms 中删除内置字段
- angular - mat-nav-item 不是已知元素
- android - 语音搜索无法从 ok google
- r - Export table to pretty XLS/open document spreadsheet
- python-3.x - signalR in python, then RecursionError
- filter - 使用 RediSearch 过滤 ID
- c++ - C++17文件路径分解成文件夹名
- java - 我们如何将 java 对象传递给 groovyx.net.http.RestClient 的 POST 调用
- java - Replacing elements in array by the larger of its neighbour
- numbers - How do I compare non integer numbers using freemarker templete