Я пытаюсь получить список адресов электронной почты с веб-сайта и очень близко. Код, который у меня есть, можно посмотреть ниже. Я получаю следующую ошибку.python - Найти адрес электронной почты на странице с selenium
Что происходит, так это то, что есть страница ссылок, которые затем нажаты, и на следующей странице есть адрес электронной почты.
Я пытаюсь распечатать адрес электронной почты на каждой странице после щелчка ссылки.
Here is an example of a page that the link clicks through to.
xTraceback (самый последний вызов последнего): Файл "scrape.py", строка 34, в поиска (драйвер) Файл "scrape.py", строка 26, в поиска emailAdress = driver.find_element_by_xpath ('// div [@ id = "widget-contact"] // a') .get_attribute ('hr ef') Файл "/usr/local/lib/python2.7/site-packages/selenium/ webdriver/remote/webdriver.py ", строка 293, в find_element_by_xpath return self.find_element (by = By.XPATH, value = xpath) Файл" /usr/local/lib/python2.7/site-packages/selenium/ webdriver/remote/webdriver.py ", строка 752, в find_element 'значение': значение}) ['value'] Файл «/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py», строка 236, в исполнении self.error_handler.check_response (response) Файл " /usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py ", строка 192, в check_response raise exception_class (message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException:
Я использую python 2.7.13
.
# -*- coding: utf-8 -*-
from lxml import html
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
def init_driver():
driver = webdriver.Firefox()
driver.wait = WebDriverWait(driver, 5)
return driver
def lookup(driver):
driver.get("http://www.sportbirmingham.org/directory?sport=&radius=15&postcode=B16+8QG&submit=Search")
try:
for link in driver.find_elements_by_xpath('//h2[@class="heading"]/a'):
link.click()
emailAdress = driver.find_element_by_xpath('//div[@id="widget-contact"]//a').get_attribute('href')
print emailAdress
except TimeoutException:
print "not found"
if __name__ == "__main__":
driver = init_driver()
lookup(driver)
time.sleep(5)
driver.quit()
Когда я пытаюсь перейти к следующей странице ссылки я получаю следующую ошибку
Файл «scrape.py», строка 43, в поиска (драйвер) Файл «scrape.py ", строка 26, в поиске links.extend ([link.get_attribute ('href') для ссылки в файле driver.find_elements_by_xpath ('// h2 [@ class =" heading "]/a')]) Файл "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py ", строка 139, в get_attribute self, name) Файл" /usr/local/lib/python2.7/site -packages/себе lenium/webdriver/remote/webdriver.py ", строка 465, в файле execute_script 'args': convert_args}) ['value'] Файл" /usr/local/lib/python2.7/site-packages/selenium/webdriver /remote/webdriver.py ", строка 236, в исполнении self.error_handler.check_response (response) Файл" /usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py " , строка 192, in check_response raise exception_class (message, screen, stacktrace) selenium.common.exceptions.StaleElementReferenceException: Message: Ссылка на элемент устарела. Либо элемент больше не , прикрепленный к DOM, либо страница была обновлена.
Не могли бы вы опубликовать некоторые HTML, поэтому мы можем проверить, если селектор является правильным? – Usmiech
Общий общий журнал об ошибках – Andersson
@ Andersson полный журнал общий –