Как проанализировать список гиперссылок, содержащих встроенные PDF-файлы, просмотреть ключевое слово и ввести результат в excel, используя Python? - PullRequest
0 голосов
/ 18 февраля 2020

Я новичок в кодировании и использую Selenium и Python, чтобы начать автоматизировать некоторые из моих работ. Одна из задач, которую мне было предложено сделать, - заголовок выше. Пошаговая проблема заключается в следующем:

1) Откройте ссылку в списке HTML-файлов, которые приводят к внедрению PDF-файлов.

2) Убедитесь, что ссылки активны и PDF-файлы не содержат определенное ключевое слово.

3) Запишите результат проверки в Excel.

Ячейки файла Excel перечислены следующим образом:

| --------------- Ссылка ---------- -------- | Активный? | Содержать "Ключевое слово1"? | Содержат "Ключевое слово2"? |

| https://link.com/example.pdf | Да / нет | -------- Да / Нет ----------- | ----------- Да / Нет -------- |

и так далее ...

Я уже написал код, который дал мне 400+ ссылок в списке, который я установил в качестве переменной. Я также написал код, который откроет каждую ссылку в диапазоне списка. Теперь я пытаюсь выяснить, как лучше всего искать эти PDF-файлы, чтобы убедиться, что они содержат «Keyword1» или «Keyword2», а затем записать результат обратно в файлы Excel.

Мой план состоит в том, чтобы загрузить каждый файл PDF в формате for i в диапазоне l oop, а затем назвать их в индексном порядке, чтобы сохранить хронологию файлов PDF в порядке. Затем используйте модуль python pdf, чтобы прочитать каждый файл PDF и проверить, содержат ли они «Keyword1» или «Keyword2». После этого ячейки спрашивают «Active?», «Keyword1»? И «Keyword2»? будет заполнено "Да" или "Нет" в зависимости от вывода итерации.

Вот мой код:

import time
import openpyxl
from pathlib import Path
from selenium import webdriver
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 cond

webList = [] #<-- List of 400+ websites I have to verify.
driver = webdriver.Chrome()

def selectXPATH(str_Link):
    try:
        #continually search for element until clickable for 5 seconds
        element = WebDriverWait(driver,5).until(
            cond.visibility_of_element_located((By.XPATH, str_Link))
        )
        #returns the selected element as a variable to be referenced later
        return element
    except:
        pass

def clickXPATH(str_Link):
    try:
        #continually search for element until clickable for 5 seconds
        element = WebDriverWait(driver,5).until(
            cond.visibility_of_element_located((By.XPATH, str_Link))
        )
        #clicks the element
        element.click()
    except:
        pass

def sendKeysXPATH(str_Link, str_Txt):
    try:
        #continually search for element until clickable for 5 seconds
        element = WebDriverWait(driver,5).until(
            cond.visibility_of_element_located((By.XPATH, str_Link))
        )
        #sends the specified text to specified form element
        element.send_keys(str_Txt)
    except:
        pass

#XPATH of username form, password form, and login button (main login page)
un_Elem_Link = '/html/body/div/center/fieldset/form/div[1]/input'
pw_Elem_Link = '/html/body/div/center/fieldset/form/div[2]/input'
login_Button = '/html/body/div/center/fieldset/form/button'
un_Txt = 'username'
pw_Txt = 'password'

def login():
    #finds username and password forms and sends users input
    sendKeysXPATH(un_Elem_Link, un_Txt)
    sendKeysXPATH(pw_Elem_Link, pw_Txt)
    clickXPATH(login_Button)

def brokenArticle():
    try:
    selectXPATH('/html/body/div[2]/span/text()')
except:
    pass

for i in range(2):
    driver.get(webList[i])
    login()
    brokenArticle()

driver.quit()
...