python - 无法将 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')
请帮我为这个匹配问题找到另一个解决方案。谢谢!
解决方案
我刚刚更改了已售元素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
推荐阅读
- python - 为什么我不能在函数内修改列表(作为一个整体)?
- java - GCP Cloud Run API(SDK) - 以编程方式创建服务
- mysql - 如何在 Golang 中处理 Bit(1) 类型
- elasticsearch - 如何在elasticsearch中更新字段的数据类型
- flutter - 如何从 Webflow 加载 Flutter Web 应用程序?
- python - 如何选择 texbox 并搜索内容并在 selenium - python 中选择第一个选项?
- solver - 如何使用 Python 解决以字符串格式给出的布尔表达式?
- bitbucket - Bitbucket Pipeline:我们可以在构建开始时获取参数值吗
- python-multiprocessing - python多处理突然只使用一个核心
- toad - 如何在 Toad for Oracle 中按项目组织连接