Я новичок в кодировании и использую 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()