python - 使用selenium在页面上查找电子邮件地址

2024-04-21

我正在尝试从网站获取电子邮件地址列表,并且非常接近。我的代码如下所示。我收到以下错误。

发生的情况是,有一个链接页面,然后单击该链接,在下一页中有一个电子邮件地址。

单击链接后,我试图打印每个页面内的电子邮件地址。

这是链接点击进入的页面示例 http://www.sportbirmingham.org/directory/sport-birmingham.

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 中 返回 self.find_element(by=By.XPATH, value=xpath) 文件“/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py”, 第 752 行,在 find_element 中 '值': 值})['值'] 文件“/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 中 引发异常类(消息,屏幕,堆栈跟踪)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('hr‌​ef')
            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') for link in 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,名称)文件“/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py”, 第 465 行,在execute_script 中 'args':converted_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 行,在 check_response 中 引发异常类(消息,屏幕,堆栈跟踪)selenium.common.exceptions.StaleElementReferenceException:消息: 元素引用已过时。要么该元素不再 附加到 DOM 或页面已刷新。


你只需要更精确的 XPATH (也可以调用text方法):

emailAdress = driver.find_element_by_xpath('//div[@class="body"]/dl/dd[2]').text

但这个例子适用于Python3。请让我知道这对你有没有用。 我还建议使用 Chrome 的“XPath Helper”扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python - 使用selenium在页面上查找电子邮件地址 的相关文章

  • 如何使用 pandas 选择所有非 NaN 列和非 NaN 最后一列?

    如果标题有点令人困惑 请原谅我 假设我有test h5 下面是使用读取该文件的结果df read hdf test h5 testdata 0 1 2 3 4 5 6 0 123 444 111 321 NaN NaN NaN 1 12 2
  • 静态文件配置不正确

    我已经在 Heroku 上部署了简单的博客应用程序 它运行在Django 1 8 4 我在静态文件方面遇到了一些问题 当打开我的应用程序时 我看到Application Error页面 所以我尝试调试它并发现当我提交到 Heroku 时它无
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • Selenium - 保存网站,包括所有图像、css、dom

    我想使用 firefox 或 chrome 访问带有 selenium 的页面 当页面加载时 我想从页面下载所有图像 css dom 我想存储每张图像 就像我在其中找到它们一样 chrome gt Tools gt Development
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 有条件填写 pandas 数据框

    我有一个数据框df列中包含浮点值A 我想添加另一列B这样 B 0 A 0 for i gt 0 B i if np isnan A i then A i else Step3 B i if abs B i 1 A i B i 1 lt 0
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • 在函数调用之间保存数据的Pythonic方式是什么?

    对我来说 上下文是我需要在调用修改该值的函数之间保留的单个 int 的信息 我可以使用全局 但我知道这是不鼓励的 现在 我使用了包含 int 的列表形式的默认参数 并利用了可变性 以便在调用之间保留对值的更改 如下所示 def increm
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • InvalidArgumentException:消息:无效参数:“using”必须是字符串

    我对 python 很陌生 试图创建可重用的代码 当我尝试通过传递 Login 类下使用的所有参数来调用 test main py 中的 Login 类和函数 login user 时 我收到错误 InvalidArgumentExcept
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • 如何从数据框的单元格中获取值?

    我构建了一个条件 从我的数据框中提取一行 d2 df df l ext l ext df item item df wn wn df wd 1 现在我想从特定列中获取一个值 val d2 col name 但结果 我得到一个包含一行和一列
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns

随机推荐

  • 使用 xgboost 的 Spark scala sbt 构建失败

    build sbt 清理包 给出以下错误 Resolving org fusesource jansi jansi 1 4 warn warn UNRESOLVED DEPENDENCIES warn warn ml dmlc xgboos
  • 写入文件,输出文件在哪里?

    FileWriter outFile null try outFile new FileWriter member txt catch IOException e TODO Auto generated catch block e prin
  • 在 gem 上运行测试的简单方法?

    有没有一种快速简便的方法来测试本地已安装的 gem 喜欢 gem test gem name to test rubygems 文档 http docs rubygems org read chapter 11说可以放gem run tes
  • PHP 5.3 向后兼容 PHP 5.2 吗?

    我开始学习PHP 我想使用 PHP 5 3 因为它是迄今为止的最新版本 我正在开发一个项目 在该项目中我将使用某人给我的 PHP 5 2 脚本 即使我使用 PHP 5 3 它们也能正常运行吗 PHP net 的特点是guide http p
  • 如何转义 xsl:param 中的分号?

    我正在 Visual Studio 中编写 XSL 转换 据报告 下面的分号是一个 意外的标记
  • 当 props 改变时,以下策略中哪一个是重置组件状态的最佳方法

    我有一个非常简单的组件 带有文本字段和按钮 它接受一个列表作为输入 并允许用户循环浏览该列表 该组件有以下代码 import as React from react import Button from material ui core i
  • 如何在传递给命令行参数时转义 Bash 中的变量

    我有一个 Bash 脚本 Cygwin 它使用一些带有空格的 Windows 路径 因此 我逃离了这个空间 在我的变量定义中 脚本中的所有内容都运行良好 但是 我需要将此变量作为参数传递给命令行可执行文件 当我这样做时 我的逃跑就会变得一团
  • SED 或 AWK 将所有内容替换为另一个文件中的模式

    我正在尝试使用 SED 脚本进行模式替换 但它无法正常工作 样本内容 txt 288Y2RZDBPX1000000001dhana JP2F64EI1000000002d EU9V3IXI1000000003dfg1000000001dfd
  • 使用 NSArrayController 过滤单列 NSTableView

    我展示了一张带有NSTableView 一栏 一个NSSearchField and an NSButton 添加 我想要的是将表视图的内容设置为字符串列表 该字符串列表位于NSArray called list 应根据搜索字段的内容过滤此
  • 如何在 Google Ads api 中设置请求标头

    我想为我的经理帐户下的广告帐户提出预算 我有以下 YAML 文件 developer token 13245 login customer id 1324567891 customer id 1324567891 user agent 13
  • 为 v-html 添加 CSS 样式

    我想在 HTML 代码中添加样式v html 我尝试了几种解决方案 但没有任何功能 这是我的代码 模板 div class para div 脚本 export default data return value h2 TITLE h2 p
  • Android模拟器平台4.0启动问题

    我刚刚迁移到冰淇淋三明治模拟器 4 0 启动它时遇到很多困难 有时我收到数据库连接存在错误 并且无法启动 然后出现线程 52 违规之类的情况 现在模拟器已加载 但当我尝试解锁它时 我收到一些策略违规错误 然后它冻结了 我真的很沮丧 其他人也
  • UISearchBar - ReturnKeyType 不适用于 iOS 8

    我在用UISearchbar在故事板的表视图控制器中 和搜索栏returnKeyType is UIReturnKeySearch 它在 iOS7 上运行良好 但是returnKeyType不适用于 iOS8 在iOS8中 键盘上每次都会出
  • 无法使用 junit 测试异常

    我有一个包含 try catch 块的方法 但我不知道如何使我的测试通过 这是我的代码 public class ClassToTest public void loadFileContent try InputStream fileStr
  • 在 IIS7 中使用 WAS 时,global.asax Application_Start 等效项是什么

    我想对当前托管在 IIS7 中的 WCF 应用程序使用 netTcpBinding 这意味着将其配置为使用 WAS 这相当简单 但是 我的应用程序之前使用了 global asax 文件中的 Application Start 事件 我不需
  • 使用嵌套数组过滤对象数组

    所以我试图在对象数组上设置嵌套过滤器 问题是过滤器应用在对象内部的另一个对象数组的键上 这是代码 const items name 123 id 1 value true arr id 1 name 456 id 2 value false
  • iOS 7 错误警告:在演示或关闭正在进行时尝试从视图控制器 关闭

    我在 iOS 7 中遇到了 iOS 6 中未出现的问题 我有一个导航控制器 它显示另一个导航控制器来添加员工 第二个控制器以模态方式呈现 当我使用 取消 或 完成 按钮关闭第二个控制器时 出现错误 这是错误 QuickSchedule 88
  • 检查 LocalDateTime 是否在时间范围内

    我的时间 A 应该在时间 B 的 90 分钟范围内 之前和之后 示例 时间为 4 00 pm 时间 A 应介于 2 30 pm 90 到 5 30 pm 90 之间 尝试了以下方法 if timeA isAfter timeB minusM
  • 只允许在 Codeigniter 中看到路由中指定的 URL

    如果我有一个名为articles的控制器 它有一个名为view articles的方法 用户可以输入http example com articles view articles some post http example com art
  • python - 使用selenium在页面上查找电子邮件地址

    我正在尝试从网站获取电子邮件地址列表 并且非常接近 我的代码如下所示 我收到以下错误 发生的情况是 有一个链接页面 然后单击该链接 在下一页中有一个电子邮件地址 单击链接后 我试图打印每个页面内的电子邮件地址 这是链接点击进入的页面示例 h