【问题标题】:Selenium Scrape in PythonPython中的Selenium Scrape
【发布时间】: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


【解决方案1】:

将该字符串加载到名为 html 的变量中。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
tags = soup.findAll('td')
for tag in tags:
    print tag.getText()

BeautifulSoup 是解析数据的众多方法之一。如果您通过查找字符串了解基本 Python,您也可以使用纯 Python 函数“

【讨论】:

  • 使用 BeautifulSoup 会比我上面的方法更快或更有效吗?
  • 不确定效率。你必须自己计时。
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2022-08-20
  • 2013-11-23
相关资源
最近更新 更多