如何从非正规类中收集信息。 (Selenium,Python)

时间:2017-07-29 07:45:11

标签: python selenium

我想从ebay等网站收集信息(名称)并将其附加到列表中。但我有一个问题。 我的代码:

for a in driver.find_elements_by_id("scroll"):
    name = a.find_element(By.CLASS_NAME(".market-name.market-link")).getText()
    mylist.append(name)
print(mylist)

问题:

  

name =   a.find_element(By.CLASS_NAME( “市场name.market链接”))。gettext的()   TypeError:'str'对象不可调用

怎么了?

Html代码(我删除了不必要的东西,比如picters等):

<div class="featured-item col-sxs-12 col-xs-6 col-sm-6 col-md-4 col-lg-3 center-block app_730_2 item_17511241 has-wear scanned">
    <div>
        <a class="market-name market-link" href="=shop_view_item&amp;item=17511241">
        Happy
        </a>
        <div class="item-amount" onclick="showGraphFromId(17511241)">
        $0.04
        </div>
        <button class="btn btn-orange" type="button" onclick="addToCart(17511241, 730, 4)">
        Add to Cart
        </button>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

  1. 您使用不正确的By。 ".market-name.market-link"是Css选择器,而不是类名。 因此,您可以通过将By.CLASS_NAME更改为By.CSS_SELECTOR
  2. 来解决此问题
  3. By.CLASS_NAMEfind_element的第一个参数,它不是方法,而是值。第二个参数是表达式。
  4. 见下面的代码。

    try:
        name = WebDriverWait(browser, 15).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".market-name.market-link"))
        ).text
    except:
        print("Can't find the text.")