Python:为什么Selenium不使用Regex删除循环中的最后一个网页?

Python:为什么Selenium不使用Regex删除循环中的最后一个网页?,python,regex,selenium,beautifulsoup,Python,Regex,Selenium,Beautifulsoup,我正在建造一个简单的硒刮刀。它应该检查是否存在“联系人”链接,然后,如果存在,则使用Regex解析电子邮件。如果不是,则解析Selenium所在的页面。 问题是,尽管前三个(随机选择的)网站,该程序可以获得电子邮件,但对于最后一个网站,它不仅不能在页面上搜索电子邮件,甚至不能关闭浏览器。然而,循环似乎已经结束,因为输出是“成功”。我做错了什么?为什么它不删除dicti\u pretty\u链接中的最后一页?代码和输出如下: import re from selenium import webdr

我正在建造一个简单的硒刮刀。它应该检查是否存在“联系人”链接,然后,如果存在,则使用Regex解析电子邮件。如果不是,则解析Selenium所在的页面。 问题是,尽管前三个(随机选择的)网站,该程序可以获得电子邮件,但对于最后一个网站,它不仅不能在页面上搜索电子邮件,甚至不能关闭浏览器。然而,循环似乎已经结束,因为输出是“成功”。我做错了什么?为什么它不删除
dicti\u pretty\u链接中的最后一页?代码和输出如下:

import re
from selenium import webdriver
from bs4 import BeautifulSoup
import time, random

global scrapedEmails
scrapedEmails = []

#dicti_pretty_links = ['http://ayuda.ticketea.com/en/contact-us/','https://www.youtube.com/t/contact_us','http://www.haysplc.com/','http://madrid.usembassy.gov']
#http://www.iberia.com, http://madrid.usembassy.gov
dicti_pretty_links = ['http://www.haysplc.com/','https://www.youtube.com/t/contact_us','http://madrid.usembassy.gov','http://ayuda.ticketea.com/en/contact-us/',]

for el in dicti_pretty_links:   #This converts page into Selenium object
                browser = webdriver.Firefox()
                page = browser.get(el)
                time.sleep(random.uniform(0.5,1.5))
                try:                                #Tries to open "contact" link
                    contact_link = browser.find_element_by_partial_link_text('ontact')
                    if contact_link:
                        contact_link.click()
                except:
                    continue
                html = browser.page_source          #Loads up the page for Regex search
                soup = BeautifulSoup(html,'lxml')
                time.sleep(random.uniform(0.5,1.5))
                emailRegex = re.compile(r'([a-zA-Z0-9_.+]+@[a-zA-Z0-9_.+.+]+)', re.VERBOSE)
                mo = emailRegex.findall(html)
                print('THIS BELOW IS SEL_emails_MO for',el)
                print(mo)
                for el in mo:
                    if el not in scrapedEmails:     #Checks if emails is/adds to ddbb
                        scrapedEmails.append(el)
                browser.close()
print(100*'-')
print('This below is scrappedEmails list')
print(scrapedEmails)
这是运行上述程序的输出:

C:\Users\SK\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/SK/PycharmProjects/untitled/temperase
THIS BELOW IS SEL_emails_MO for http://www.haysplc.com/
['customerservice@hays.com', 'customerservice@hays.com', 'ir@hays.com', 'ir@hays.com', 'cosec@hays.com', 'cosec@hays.com', 'hays@team365.co.uk', 'hays@team365.co.uk']
THIS BELOW IS SEL_emails_MO for https://www.youtube.com/t/contact_us
['press@youtube.com.']
THIS BELOW IS SEL_emails_MO for http://madrid.usembassy.gov
['visasmadrid@state.gov', 'visasmadrid@state.gov', 'visasmadrid@state.gov', 'ivmadrid@state.gov', 'ivmadrid@state.gov', 'ivmadrid@state.gov', 'askACS@state.gov', 'askacs@state.gov', 'askACS@state.gov']
----------------------------------------------------------------------------------------------------
This below is scrappedEmails list
['customerservice@hays.com', 'ir@hays.com', 'cosec@hays.com', 'hays@team365.co.uk', 'press@youtube.com.', 'visasmadrid@state.gov', 'ivmadrid@state.gov', 'askACS@state.gov', 'askacs@state.gov']

Process finished with exit code 0

问题在于
http://ayuda.ticketea.com/en/contact-us/
page,没有带有“ontact”部分链接文本的链接(
a
元素)。
browser.find\u element\u by_partial\u link\u text()
调用失败,出现
NoTouchElementException
和循环
continue
s

如果您不想
继续
在未找到链接的情况下循环,而是尝试在当前页面上搜索电子邮件地址,请忽略异常,但不要
继续
循环:

try:                                
    contact_link = browser.find_element_by_partial_link_text('ontact')
    if contact_link:
        contact_link.click()
except:
    print("No Contact link found")

问题在于
http://ayuda.ticketea.com/en/contact-us/
page,没有带有“ontact”部分链接文本的链接(
a
元素)。
browser.find\u element\u by_partial\u link\u text()
调用失败,出现
NoTouchElementException
和循环
continue
s

如果您不想
继续
在未找到链接的情况下循环,而是尝试在当前页面上搜索电子邮件地址,请忽略异常,但不要
继续
循环:

try:                                
    contact_link = browser.find_element_by_partial_link_text('ontact')
    if contact_link:
        contact_link.click()
except:
    print("No Contact link found")

谢谢你,亚历克斯,你提供了一个信息丰富、解释清楚、行之有效的答案!多亏了你的评论,我才了解到“通行证”的含义。谢谢你亚历克斯,他提供了一个信息丰富、解释清楚的有效答案!多亏了你的评论,我学会了“通行证”。