在没有结果的情况下,在python中使用硒搜索电子邮件地址并返回信息失败

时间:2018-12-21 10:49:03

标签: python selenium web-scraping

在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()

1 个答案:

答案 0 :(得分:0)

我认为这将帮助您在上面的代码中为namediv对象设置条件。如下所示:

如果namediv为None:
    打印(“未找到“ +电子邮件的结果”)
    退出(0)

更好,即使您可以为没有结果时出现的任何元素添加检查。相信您的代码失败,因为程序试图从不存在的元素中检索文本。