簡體   English   中英

在沒有結果的情況下,在python中使用硒搜索電子郵件地址並返回信息失敗

[英]Using selenium in python to search email adresses and return information fails when no result

在python中使用硒創建一個腳本,該腳本遍歷電子郵件列表,將其粘貼到網頁的搜索欄中,並返回定義為csv文件的個人信息。

一切正常,但是只要一封電子郵件沒有給出任何搜索結果,我的腳本就會停止。 我試過嘗試,除了。 但這是行不通的。

編輯:我的腳本中的頁面是占位符,因為頁面即時抓取與公司相關/內部。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import csv
import os

f = open('email_list.csv')
csv_f = csv.reader(f, delimiter=';')
email_list = []

for row in csv_f:
   email_list.append(row[0])
f.close()


url = 'https://placeholderpage.com'

webdriver_path = os.path.abspath('./chromedriver_win32/chromedriver.exe')


options = webdriver.ChromeOptions()
options.add_argument('user-agent = Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
driver = webdriver.Chrome(options=options, executable_path=webdriver_path)

f = open("DT_Output.csv", "w")

headers = "Name ; Department ; Company ; Address ; Phone ; Mobile ; Email ; Line Manager ; Manager Status ; Status ; OZT\n"

f.write(headers)

for emails in email_list:
    try:
        driver.implicitly_wait(2000)
        driver.get(url)
        python_button = driver.find_element_by_id('search').send_keys(emails)
        driver.find_element_by_class_name('cst-query-btn').click()

        namediv = driver.find_element_by_class_name('vcard-head')
        name = namediv.find_element_by_class_name('name').text

        department = driver.find_element_by_class_name('org-name-alt').text

        company = driver.find_element_by_class_name('company').text

        address = driver.find_element_by_class_name('location').text

        phone = driver.find_element_by_class_name('telephone').text

        mobile = driver.find_element_by_class_name('mobile').text

        email = driver.find_element_by_class_name('email').text

        line_manager = driver.find_element_by_class_name('linemanager').text

        manager_status = driver.find_element_by_class_name('linemanager-status').text

        status = driver.find_element_by_class_name('status').text

        ozt = driver.find_element_by_class_name('ozt').text

        f.write(name + ";" + department + ";" + company + ";" + address + ";" + phone + ";" + mobile + ";" + email + ";" + line_manager + ";" + manager_status + ";" + status + ";" + ozt + "\n")
    except NoSuchElementException:
        pass

f.close()

我認為這將幫助您在上面的代碼中為namediv對象設置條件。 如下所示:

如果namediv為None:
打印(“未找到“ +電子郵件的結果”)
出口(O)

即使您可以為沒有結果時出現的任何元素添加一個檢查,也更好。 相信您的代碼失敗,因為程序試圖從不存在的元素中檢索文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM