首页 > 解决方案 > 无法将 2 个元素与一个具有空值的元素匹配

问题描述

我正在尝试匹配此站点上列出的产品的名称和已售数量属性:我的网站(例如)但是,有些产品项目没有已售出数量元素。确切地说,该元素未显示,因为该商店尚未出售任何此类商品。我尝试抓取并匹配产品名称(@class='name_product shop_color_hover')和销售数量(@class='s_b')。这是我的工作:

from selenium import webdriver
.......
element_name='//*[@class="name_product shop_color_hover"]'
element_price='//*[@class="current_price"]'
element_sold='//*[@class="s_b"]'
link='https://www.sendo.vn/shop/dungcuykhoa_tanphu/san-pham/?p=1'
browserdriver.get(link)
allrows_name=browserdriver.find_elements_by_xpath(element_name)
allrows_sold=browserdriver.find_elements_by_xpath(element_sold)
for row_name, row_sold in zip(allrows_name,allrows_sold):
    print( row_name.text +":::"+row_sold.text)
print("program end")

这可行,但由于 allrows_sold 中缺少值(空值),匹配结果不正确

Túi chườm đá lạnh size lớn:::2
Combo 6 cây giấy lau mặt trong thẩm mỹ, spa:::3
Thước đo mắt - compa mắt:::7
Bộ giác hơi không dùng lửa Duy Thành YGH02 - Valy đen:::3
Máy đo tiểu đường OGCare chính hãng tặng 3 hộp que:::6
Hộp 25 que thử đường huyết OGCare date xa:::33
Túi chườm nóng lạnh đa năng Hướng Dương cỡ đại:::1
Bộ giác hơi không dùng lửa Duy Thành valy nâu:::2
Kính bảo hộ Spider chống bụi gió an toàn cho bé:::2
Máy đo đường huyết OGCare kèm 25 que thử:::15
Vớ y khoa, vớ tĩnh mạch Đức chính hãng - Vớ gối:::19
Vớ y khoa phòng ngừa và điều trị suy giãn tĩnh mạch vùng gối Jiani - Ý:::11
Vớ y khoa phòng ngừa và điều trị giãn tĩnh mạch Jiani - Vớ gối:::4
program end

如您所见,它一直运行良好,直到 allrows_sold 中没有已售数量值的第三行现在我希望程序将“0”键入任何已售出数量为空的项目(@class='s_b')

请帮我为这个匹配问题找到另一个解决方案。谢谢!

标签: pythonseleniumfor-loop

解决方案


我刚刚更改了已售元素xpath并检查了文本值是否为空分配 '0'

element_name='//*[@class="name_product shop_color_hover"]'
element_price='//*[@class="current_price"]'
element_sold='//div[@class="social_box"]'
link='https://www.sendo.vn/shop/dungcuykhoa_tanphu/san-pham/?p=1'
browserdriver.get(link)
allrows_name=browserdriver.find_elements_by_xpath(element_name)
allrows_sold=browserdriver.find_elements_by_xpath(element_sold)

for row_name, row_sold in zip(allrows_name,allrows_sold):
    if row_sold.text!='':

       print( row_name.text +":::"+row_sold.text)
    else:

        print(row_name.text + ":::" + "0")
print("program end")

输出:

Túi chườm đá lạnh size lớn:::2
Combo 6 cây giấy lau mặt trong thẩm mỹ, spa:::3
Thước đo mắt - compa mắt:::0
Bộ giác hơi không dùng lửa Duy Thành YGH02 - Valy đen:::7
Máy đo tiểu đường OGCare chính hãng tặng 3 hộp que:::0
Hộp 25 que thử đường huyết OGCare date xa:::3
Túi chườm nóng lạnh đa năng Hướng Dương cỡ đại:::6
Bộ giác hơi không dùng lửa Duy Thành valy nâu:::33
Kính bảo hộ Spider chống bụi gió an toàn cho bé:::1
Máy đo đường huyết OGCare kèm 25 que thử:::2
Vớ y khoa, vớ tĩnh mạch Đức chính hãng - Vớ gối:::2
Vớ y khoa phòng ngừa và điều trị suy giãn tĩnh mạch vùng gối Jiani - Ý:::15
Vớ y khoa phòng ngừa và điều trị giãn tĩnh mạch Jiani - Vớ gối:::19
Vớ y khoa phòng ngừa và điều trị giãn tĩnh mạch Jiani - Vớ đùi:::11
Máy massage Mini Squirrel V-555 nhập khẩu chính hãng Hàn Quốc:::4
program end

Process finished with exit code 0

推荐阅读