首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Selenium + XPath在Morningstar.com上实现Python web抓取

通过Selenium + XPath在Morningstar.com上实现Python web抓取
EN

Stack Overflow用户
提问于 2018-05-26 07:30:19
回答 1查看 875关注 0票数 1

我正在尝试使用Selenium库在Morningstar.com上抓取与共同基金和ETF相关的数据,但以下代码不起作用:

代码语言:javascript
复制
from selenium import webdriver

driver = webdriver.Chrome()
link = "https://www.morningstar.com/etfs/bats/maga/quote.html"
driver.get(link)

TNA = driver.find_elements_by_xpath('//td[@class="gr_table_colm2b"]//span[@id="NAV"]')
print(TNA)
currency = driver.find_elements_by_xpath('//span[@class="gr_text3" and @id="navCurrency"]')
print(currency)

driver.close()

它有什么问题?我已经检查过Selenium实际上是通过远程打开Chrome的,并且XPath在HTML代码中找到了正确的模式。

EN

回答 1

Stack Overflow用户

发布于 2018-05-26 08:30:44

你有问题是因为iFrames (本质上是网页中的一个网页)。要访问iFrame中的项目,您需要先切换到它。

代码语言:javascript
复制

定义所需iFrame的路径。我使用了@src包含

因为页面上有多个iFrames。

代码语言:javascript
复制
iframe = driver.find_element_by_xpath("//iframe[contains(@src,'.com/quote')]")
driver.switch_to.frame(iframe);

# I added the text part since I figured that was what you ultimately wanted.
TNA = driver.find_elements_by_xpath('//td[@class="gr_table_colm2b"]//span[@id="NAV"]')[0].text
print(TNA)
currency = driver.find_elements_by_xpath('//span[@class="gr_text3" and @id="navCurrency"]')[0].text
print(currency)

27.79  
USD

假设您想切换回原始页面,请使用以下代码。

代码语言:javascript
复制
driver.switch_to.default_content()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50537982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档