如何在Python中使用Selenium为亚马逊搜索页面找到正确的“布局”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中使用Selenium为亚马逊搜索页面找到正确的“布局”?相关的知识,希望对你有一定的参考价值。

我正在使用Python 3.5从amazon.com上删除一些产品信息。在自动执行“search-grabinfo”过程的过程中,我发现当页面布局发生变化时会中断。目前我知道2种不同的布局,我希望有一个if形式的条件:

if layout = DefaultLayout:
    #do something...
elif layout = ListLayout:
    #do something differently...
else:
    pass 

我能够找到这个布局选项的<div class>标签,但是我无法使用selenium来获取它在我的if条件下使用

对于默认布局:<div id="searchTemplate" class="searchTemplate defaultLayout so_us_en" >...</div> 对于列表布局:<div id="searchTemplate" class="searchTemplate listLayout so_us_en" >...</div>

使用XPath似乎不是一个选项,因为它的形式为"/html/body/table/tbody/tr[1350]/td[2]/span/span[4]"with tr [i]不是常数

答案

如果我理解了问题,您可以使用此模板:

# check if defaultLayout is on the page
defaultLayout = driver.find_elements_by_xpath("//div[@id = 'searchTemplate' and @class = 'searchTemplate defaultLayout so_us_en']")

# check if listLayout is on the page
listLayout = driver.find_elements_by_xpath("//div[@id = 'searchTemplate' and @class = 'searchTemplate listLayout so_us_en']")

if not defaultLayout:
    #do something...
elif not listLayout:
    #do something differently...
else:
    pass 

这个模板的想法是获取元素列表并检查列表是否为空。

注意:我使用过find_elements,因为它返回找到的元素列表,如果没有找到元素,它不会抛出任何异常,只返回一个空列表。

以上是关于如何在Python中使用Selenium为亚马逊搜索页面找到正确的“布局”?的主要内容,如果未能解决你的问题,请参考以下文章

使用亚马逊产品广告 API - Python 搜索书籍

Python Selenium 找不到元素

[Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章

MAC下使用selenium躲过亚马逊反爬虫机制

如何使用 Python 在 Selenium WD 中检查变量的值是不是为整数? [复制]

Python + Selenium - 如何检查使用 CSS 设置样式并显示为内容的图像?