Пытаетесь загрузить PDF-файлы с веб-сайта, используя таблицу HTML в кадре данных? - PullRequest
0 голосов
/ 15 апреля 2020

Я перебрал таблицу HTML из https://www.asx.com.au/asx/statistics/prevBusDayAnns.do. Я поместил эту таблицу в pandas фрейм данных. Я также создал еще один столбец для фрейма данных под названием «Соответствие», в котором, если «Код ASX» = «SPL», он отображает 1. Если вы посмотрите на веб-сайт, вы увидите, что заголовки - это заголовки файлов PDF, которые можно скачать. Я хотел бы загрузить файл, если столбец «Соответствие» = 1. Возможно ли это? Селен?

Мой код:

import pandas as pd
dfs = pd.read_html('https://www.asx.com.au/asx/statistics/prevBusDayAnns.do')
for df in dfs:
    df.loc[df['ASX Code'] == 'SPL', 'Match'] = "1"
    df.loc[df['ASX Code'] != 'SPL', 'Match'] = "0"
    print(df)

Фрейм данных:

    ASX Code                 Date  Price sens.                                           Headline Match
0        SPL  15/04/2020  7:25 PM          NaN  SPL7013 shows significant activity against cor...     1
1        LSH  15/04/2020  7:19 PM          NaN  Change of Director's Interest Notice  2  pages...     0
2        PSQ  15/04/2020  7:14 PM          NaN  PSQ Implements Dividend Reinvestment Plan  25 ...     0
3        TGN  15/04/2020  7:11 PM          NaN  March Quarterly Report and Appendix 5B  24  pa...     0
4        GRR  15/04/2020  6:49 PM          NaN  Change of Director's Interest Notice  3  pages...     0

1 Ответ

1 голос
/ 15 апреля 2020

Вам нужно сделать пару вещей.

Вам нужно установить chrome option для автоматической загрузки pdf.

Индуцировать WebdriverWait и ждать element_to_be_clickable ()

Индуцируйте WebdriverWait и ждите windows, затем переключитесь в окно, затем нажмите на кнопку Agreed and proceed

, после нажатия на этот PDF-файл автоматически загрузится в вашу папку загрузки по умолчанию.

код :

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

chromeOptions=webdriver.ChromeOptions()
prefs = {"plugins.always_open_pdf_externally": True}
chromeOptions.add_experimental_option("prefs",prefs)
driver=webdriver.Chrome(executable_path="path/to/chromedriver",chrome_options=chromeOptions)
driver.get("https://www.asx.com.au/asx/statistics/prevBusDayAnns.do")
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//table//tr//td[text()='SPL']/following-sibling::td[3]/a"))).click()
WebDriverWait(driver,15).until(EC.number_of_windows_to_be(2))
driver.switch_to.window(driver.window_handles[-1])
WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.XPATH,"//input[@value='Agree and proceed']"))).click()

Снимок браузера:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...