【问题标题】:Scraping dynamic information of stock data using Python使用 Python 抓取股票数据的动态信息
【发布时间】:2013-07-15 01:21:59
【问题描述】:

我正在尝试使用 Python 从中国网站上抓取动态股票信息:

http://vip.stock.finance.sina.com.cn/mkt/#cyb_root

但是,我是 Python 的新手。那么有人可以帮我解决这个问题吗?非常感谢。

我想做的就是从上述网站抓取 HTML 动态数据。

【问题讨论】:

  • 打开您的 Firebug/Chrome 的开发者工具,转到网络标签,然后重新加载页面。它正在向 JSON api 发送 AJAX 请求。

标签: python html dynamic web


【解决方案1】:

您可以使用http://docs.python-requests.org/en/latest/http://doc.scrapy.org/en/0.16/

如果您想关注大量链接,或者您需要抓取对象上的不同类型。我强烈推荐scrapy。如果您需要网站示例,请告诉我,这两个库都非常易于使用。

【讨论】:

  • 谢谢,但我仍然不知道该怎么做。有人可以给我这个代码吗?非常感谢。
【解决方案2】:

我尝试了您的网站,在您的情况下,使用 selenium 之类的浏览器自动化工具进行爬虫会更简单,这是 sina.com.cn 的工作示例:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://vip.stock.finance.sina.com.cn/mkt/#cyb_root")
rows = driver.find_elements_by_xpath("//div[@id='tbl_wrap']//tbody/tr")
for row in rows:
    name = row.find_element_by_xpath("./th[@class='sort_down']/a").text
    values = [v.text for v in row.find_elements_by_xpath("./td[@class='colorize']")]
    print "%s : %s" % (name, values)
driver.close()

如果你运行这个脚本,你会得到:

$ python sina_com.py
sz300001 : [u'16.51', u'+0.64', u'+4.033%', u'16.51', u'16.52', u'15.87', u'15.86', u'16.58', u'15.80']
sz300002 : [u'--', u'0.00', u'0.000%', u'0.00', u'0.00', u'19.34', u'0.00', u'0.00', u'0.00']
sz300003 : [u'10.86', u'-0.05', u'-0.458%', u'10.85', u'10.86', u'10.91', u'10.98', u'10.98', u'10.59']
sz300004 : [u'22.86', u'+1.21', u'+5.589%', u'22.86', u'22.87', u'21.65', u'21.74', u'22.98', u'21.10']
sz300005 : [u'10.91', u'+0.35', u'+3.314%', u'10.91', u'10.94', u'10.56', u'10.51', u'10.99', u'10.51']
.....

:) 祝你好运

【讨论】:

  • 非常感谢!!!但是我怎样才能摆脱所有这些引号和“u”字符串呢?
  • u"" 仅表示数组包含 unicode 字符串,您可以通过执行以下操作将它们转换为浮点数: values = [float(v.text) for v in row.find_elements_by_xpath("./td[ @class='colorize']")] 不要忘记你必须为像 u"--" 之类的值添加一些例外
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 2014-07-27
  • 1970-01-01
相关资源
最近更新 更多