Python:为什么Selenium不使用Regex删除循环中的最后一个网页?
我正在建造一个简单的硒刮刀。它应该检查是否存在“联系人”链接,然后,如果存在,则使用Regex解析电子邮件。如果不是,则解析Selenium所在的页面。 问题是,尽管前三个(随机选择的)网站,该程序可以获得电子邮件,但对于最后一个网站,它不仅不能在页面上搜索电子邮件,甚至不能关闭浏览器。然而,循环似乎已经结束,因为输出是“成功”。我做错了什么?为什么它不删除Python:为什么Selenium不使用Regex删除循环中的最后一个网页?,python,regex,selenium,beautifulsoup,Python,Regex,Selenium,Beautifulsoup,我正在建造一个简单的硒刮刀。它应该检查是否存在“联系人”链接,然后,如果存在,则使用Regex解析电子邮件。如果不是,则解析Selenium所在的页面。 问题是,尽管前三个(随机选择的)网站,该程序可以获得电子邮件,但对于最后一个网站,它不仅不能在页面上搜索电子邮件,甚至不能关闭浏览器。然而,循环似乎已经结束,因为输出是“成功”。我做错了什么?为什么它不删除dicti\u pretty\u链接中的最后一页?代码和输出如下: import re from selenium import webdr
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")
谢谢你,亚历克斯,你提供了一个信息丰富、解释清楚、行之有效的答案!多亏了你的评论,我才了解到“通行证”的含义。谢谢你亚历克斯,他提供了一个信息丰富、解释清楚的有效答案!多亏了你的评论,我学会了“通行证”。