gpt4 book ai didi

python 3 - selenium - 打印从网页上抓取的文本元素

转载 作者:行者123 更新时间:2023-12-01 15:19:51 25 4
gpt4 key购买 nike

阅读 J. Kazil 的“Data Wrangling with Python” 我正在看这个关于使用 Selenium 进行屏幕阅读的示例。代码(按照作者给出的代码)是这样的:

    # sele.py

1 import time
2 from selenium import webdriver

8 browser = webdriver.Firefox()
9 browser.get('http://www.fairphone.com/we-are-fairphone/')

11 iframe = browser.find_element_by_xpath("//iframe[@id='twine-iframe-none']")
12 new_url = iframe.get_attribute('src')
13 browser.get(new_url)
14 time.sleep(4)
15
16 all_bubbles = browser.find_elements_by_css_selector('div.content')
17 for elem in all_bubbles:
18 print(elem.text)

我更改了本书的一些代码:
第 11 行:“Data Wrangling”作者的原始代码仅使用//iframe 作为 xpath 表达式,导致出现空白页面
第 14 行:我在这里添加了超时,因为没有超时,所有发生的都是命令行光标的返回
第 18 行:原始代码适用于 Python 2,但将示例更改为 Python 3 到目前为止仍然有效(我现在在第 320 页)

发生的事情是打开一个新的浏览器窗口,加载 fairphone 的主页,然后切换到 iframe 部分。这一切都很好。下一步是打印出“气泡”内容,但这并没有发生。相反,我收集了一条相当详细的错误消息:

Traceback (most recent call last):  
File "sele.py", line 16, in module all_bubbles = browser.find_elements_by_css_selector('div.content')
File ".../virtEnv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 449, in find_elements_by_css_selector
return self.find_elements(by=By.CSS_SELECTOR, value=css_selector)
File ".../virtEnv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 778, in find_elements
'value': value})['value']
File ".../virtEnv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File ".../virtEnv/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Permission denied to access property "handleEvent"
Stacktrace:
at <anonymous> (http://apps-cdn.twinesocial.com/js-min/files/player%252Fbugsnag.js+player%252Fjquery-1.11.1.min.js+player%252Fjquery-easing-1.3.js+player%252Fjquery.timeago.js+player%252Fbootstrap-3.1.1.min.js+player%252Fisotope.pkgd.min.js+player%252Fjquery.lazy.min.js+player%252FjMinEmoji-SVG.min.js+player%252Ftheme-base.js+player%252Ftheme-base-utility.js+player%252Ftheme-base-toolbar.js+player%252Ftheme-base-fx.js+player%252Ftheme-base-manage.js+player%252FisInViewport.min.js+player%252FAnimOnScroll.js+player%252Fmodernizr.custom.js+player%252Fselect2.min.js+player%252Fhandlebars.min.js+player%252Ftheme%252Fclassic/v/2.9/t/1471301242.js:2)

我在虚拟环境中使用 Python 3.5(操作系统是 Ubuntu 16)。我被困在这里,像Read the Docs这样的文档只帮助推进到我现在的位置。我知道那里有 BeautifulSoup 或 Scrapy 等很酷的东西,但我现在想用 Selenium 来做这件事。

编辑: Another question被确定为可能重复。这个问题在 Bugsnag 和 Perl 的上下文中。不过,我通过添加

尝试了那里提到的解决方法
15 active_element = browser.switch_to_active_element()

和改变

16 all_bubbles = active_element.find_elements_by_css_selector('div.content')

产生了同样的错误信息。我注意到错误消息的最后部分确实在最后一行中嵌套了 bugsnag。我不确定这与我的设置有什么关系,因为我没有使用 bugsnag。但是,提及我使用 Firefox 48 和 Selenium 2.53.6 可能会有所帮助

最佳答案

switch_to_active_element() 已被弃用。

所以,应该是:

 active_element = browser.switch_to.active_element

可以引用this

关于python 3 - selenium - 打印从网页上抓取的文本元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com