检索类文本python selenium并迭代所有页面

时间:2017-06-30 13:49:46

标签: python html selenium

我试图从网站上检索EPSON的MFR项目数。

from selenium import webdriver

driver = webdriver.Chrome( "C:\All\chromedriver_win32\chromedriver.exe" )
driver.get('https://shop.techdata.com/searchall?b=1&kw=printer')
items = driver.find_elements_by_class_name( 'productDetailsLink' )

for i, item in enumerate(items):
    if 'EPSON' in item.text:
        MFR= item.find_element_by_xpath( './/span[@class = "darkTxt"]')
        print (i, item.text,MFR)

我找回了“我”。正确但只有EPS管产品的MFR出错了,我无法检索MFR。我收到一个错误,说MFR中没有找到任何元素。接下来我想转到下一页并检索EPSON的MFR。我不能这样做。

错误

Unable to locate element: {"method":"xpath","selector":".//span[@class = "darkTxt"]"}

我是新手所以请帮助我! 谢谢。

3 个答案:

答案 0 :(得分:0)

你可以试试这个,

    add_filter('xmlrpc_blog_options', function($blog_options)
    {
        $blog_options['blog_url']['readonly'] = false;
        return $blog_options;
    });

答案 1 :(得分:0)

问题是你发现链接是一个父元素,如果你看到html代码,Link没有任何子元素。

您需要找到包含所有信息的整个Div作为父元素。其中包含以下HTML代码

<div class="productResult js-productResult unpriced needsLogin">

以下代码段仅适用于父元素的一个小改动。

driver.get('https://shop.techdata.com/searchall?b=1&kw=printer')
items = driver.find_elements_by_class_name('productResult')

    for i, item in enumerate(items):
        if 'EPSON' in item.text:
            MFR = item.find_element_by_xpath('.//span[@class = "darkTxt"]')
            print (i, item.text, MFR)

答案 2 :(得分:0)

在Chromium上进行测试,但它在我看来只是一个错字,在find_element_by_xpath的路径上没有起始点:

MFR= item.find_element_by_xpath('//span[@class = "darkTxt"]')
print (i, item.text, MFR)