Selenium用完整的xpath和Python刮擦

时间:2014-03-19 05:17:20

标签: python selenium xpath web-scraping

我想从这里获得纳斯达克“最先进”的股票清单: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 

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

1 个答案:

答案 0 :(得分: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']

希望有所帮助。