【问题标题】:Selenium scrape with full xpath and Python使用完整的 xpath 和 Python 进行 Selenium 抓取
【发布时间】:2014-04-25 04:00:50
【问题描述】:

我正在尝试从此处获取纳斯达克“最先进”的股票列表:http://www.nasdaq.com/extended-trading/premarket-mostactive.aspx(单击“最先进”选项卡)

使用 Selenium 循环遍历所有符号并将它们放入 Python 列表的最佳方法是什么?我已经找到了第一个符号的 XPATH:

/html/body/div[4]/div[3]/div/div[7]/div[2]/table/tbody/tr[2]/td/div/h3/a 

但不确定从那里去哪里.. 我试过了:

element=driver.find_elements_by_xpath("/html/body/div[4]/div[3]/div/div[7]/div[2]/table/tbody/tr[2]/td/div/h3/a")
print element.text 

..作为一个开始只是为了看看我是否可以获得一个价值,但它显然不起作用。抱歉这个愚蠢的问题:(

【问题讨论】:

  • 你有没有弄清楚使用完整 xpath 的正确语法?如果是这样,我很想知道什么对你有用。

标签: python selenium xpath web-scraping


【解决方案1】:

这些包含元素完整绝对路径的 xpath 非常脆弱。

依赖类名(//div[@class="symbol_links"]):

from selenium.webdriver.firefox import webdriver


driver = webdriver.WebDriver()
driver.get('http://www.nasdaq.com/extended-trading/premarket-mostactive.aspx')

# choose "Most Advanced" tab
advanced_link = driver.find_element_by_id('most-advanced')
advanced_link.click()

# get the symbols
print [symbol.text for symbol in driver.find_elements_by_xpath('//div[@class="symbol_links"]') if symbol.text]

driver.close()

打印:

[u'RNA', u'UBIC', u'GURE', u'DRTX', u'DSLV', u'YNDX', u'QIWI', u'NXPI', u'QGEN', u'ZGNX']

希望对您有所帮助。

【讨论】:

  • 谢谢。但这让我得到了最活跃的列表,而不是最高级的列表。它也使用了 symbol_links 类,但即使它包含在同一个页面源中,它似乎也没有出现。想法?
  • @peelers 只需在获取符号之前单击“最高级”选项卡。
  • 嗯.. 通过 ID 查找元素对我不起作用,不知道为什么.. 很奇怪。 driver.execute_script("current('most-advanced')") 虽然有效。再次感谢!
猜你喜欢
  • 2015-11-03
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多