【发布时间】:2014-03-16 05:23:00
【问题描述】:
很抱歉这个基本问题,但我仍在努力学习。我正在尝试找出一种使用 Selenium2 和 Python 使用以下 HTML 抓取一些股票数据的智能方法(一个页面上的以下多个 <tr>):
<A NAME="line209"></A><tr align="right" class="odd" nowrap>
<A NAME="line210"></A><td>& </td>
<A NAME="line211"></A><td align="left"><strong>
<A NAME="line212"></A>BAC US N</strong></td>
<A NAME="line213"></A><td>+</td>
<A NAME="line214"></A><td>17.45</td>
<A NAME="line215"></A><td>17.49</td>
<A NAME="line216"></A><td><strong>17.47</strong></td>
<A NAME="line217"></A><td><strong><font class="fontgreen">
<A NAME="line218"></A>0.14 (0.81%)</font></strong></td>
<A NAME="line219"></A><td>81,974,096</td>
<A NAME="line220"></A><td align="middle"></td>
<A NAME="line221"></A><td>& </td>
<A NAME="line222"></A></tr>
以上代码,我需要提取:
- BAC 美国 N
- +
- 17.45
- 17.49
- 17.47
- 0.14 (0.81%)
- 81,974,096
好的,下面的代码可以做我想做的事。但是,本着学习的精神,我想让它更有效率。希望您能提供帮助:
def getData():
tickerData=[]
tickerCounter=0
ignoreText=['Symbol','T','Bid','Ask','Last',' ','','Change','Volume','FSI','Buy Sell ']
if quoteType=="Summary":
numDataPoints=9
elif quoteType=="Detail":
numDataPoints=21
for tr in driver.find_elements_by_xpath("//table[contains(@class, 'tableStyle2')]"):
tds=tr.find_elements_by_tag_name('td')
for td in tds:
if td.text not in ignoreText:
if len(tickerData) == numDataPoints:
insertData(tickerData,tickerCounter)
tickerData=[]
tickerCounter += 1
tickerData.append(td.text)
insertData(tickerData,tickerCounter)
提前致谢!!
【问题讨论】:
-
请向我们展示您迄今为止所做的尝试,将其添加到问题中,告诉我们您面临的问题?这样这里的人们会愿意帮助您
-
我会首先考虑您尝试废弃的股票数据的典型格式,然后从那里开始。只有这样,您才能开发出一种提取所需信息的好方法。
-
你真的需要 Selenium 吗,即你是否需要加载 JavaScript-Content 或其他任何东西?除此之外:在 selenium 中加载页面,提取其页面源(通过 page_source 属性),然后将该 html 加载到 BeautifulSoup 中。之后就可以使用findAll-Method/find-Method解析相关信息了。
标签: python selenium screen-scraping