python - 使用完整的 xpath 和 Python 进行 Selenium scrape

标签 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 

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

最佳答案

这些包含元素的完整绝对路径的 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']

希望有帮助。

关于python - 使用完整的 xpath 和 Python 进行 Selenium scrape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496871/

相关文章:

python - 从 pandas dataframe groupby 中提取带有计数的新列

java - 如何使用 java 中的 TestNG 将字符串从主类传递到另一个类?

sql - 更新中不允许修复集合返回函数

Python SQLAlchemy : Reflecting the database breaks default/onupdate methods?

python - 为什么函数中的 exec 中的导入不起作用?

java - 执行 PHPUnit_Selenium

python - 如何将一组参数作为一个长变量传递给 find()/find_all()

python - 使用 lxml 解析 html

xml - 使用 LibXML-Ruby 清除不需要的命名空间

python - 在python中将多个列表合并为一个列表