python - 如何使用 Selenium 和 Python 提取产品名称
问题描述
我正在尝试从技术站点获取数据,但是当我尝试打印 productBox 变量输出时显示:[] 有人可以解决吗
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.itopya.com/bilgisayar/masaustu/oyun-bilgisayarlari/')
data = driver.find_element_by_id('allProducts')
productBox = data.find_elements_by_class_name('product col-md-3')
print(productBox)
解决方案
要打印产品名称,您必须诱导WebDriverWait并且visibility_of_all_elements_located()
您可以使用以下任一Locator Strategies:
使用
CSS_SELECTOR
:driver.get("https://www.itopya.com/bilgisayar/masaustu/oyun-bilgisayarlari/?__cf_chl_jschl_tk__=f128b939cc717f7b22114e1e0f850e5b3cf16d59-1594571020-0-Aaj8nKhAOskxwytnAGUERyGvp77H0pQGK05Lmlkoq0ec5KDpM_1dDn_QLd7n-RueS6-HeAUXEbxqUIGNrGxcavD3O5G58hK-0BiQRnZVV6kr4lOBK7zHG7hMbUmjfjmYL_U_T7MKMi8rzaKgpnW5q9u4x-75lLaO8hf075M_x7788TNXBhsWuFFCxCOmBEqBrxV4J7klhj9tGaU1vYtpqY_ZDKtWuV8EkHYwswACUqLO53ddGwIjI2x1Uu22KxFy9XdvcE47dBPBp1pzcpwyZHnap625G7vxmIoZBMlq1JEgCIWUu-FMqpPlGhTpxigJwCkHaIvqcW9RlkvTbKo9PsruvjCIQFqEjD2JQSwX3LQzVVwmipkD2GNOjsLsQ6ypRKYwWSZ07AOzLuKny9mqvOQ") print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.product-inner div.product-title>a")))])
使用
XPATH
:driver.get("https://www.itopya.com/bilgisayar/masaustu/oyun-bilgisayarlari/?__cf_chl_jschl_tk__=f128b939cc717f7b22114e1e0f850e5b3cf16d59-1594571020-0-Aaj8nKhAOskxwytnAGUERyGvp77H0pQGK05Lmlkoq0ec5KDpM_1dDn_QLd7n-RueS6-HeAUXEbxqUIGNrGxcavD3O5G58hK-0BiQRnZVV6kr4lOBK7zHG7hMbUmjfjmYL_U_T7MKMi8rzaKgpnW5q9u4x-75lLaO8hf075M_x7788TNXBhsWuFFCxCOmBEqBrxV4J7klhj9tGaU1vYtpqY_ZDKtWuV8EkHYwswACUqLO53ddGwIjI2x1Uu22KxFy9XdvcE47dBPBp1pzcpwyZHnap625G7vxmIoZBMlq1JEgCIWUu-FMqpPlGhTpxigJwCkHaIvqcW9RlkvTbKo9PsruvjCIQFqEjD2JQSwX3LQzVVwmipkD2GNOjsLsQ6ypRKYwWSZ07AOzLuKny9mqvOQ") print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='product-inner']//div[contains(@class, 'product-title')]/a")))])
控制台输出:
['MSI MAG META 5 3SC-003XTR R5-3600 16GB DDR4 512GB SSD+1TB HDD RTX2060 SUPER GDDR6 8GB DOS Gaming Bilgisayar', 'MSI TRIDENT 3 9SI-614EU I5-9400F 16GB DDR4 512GB SSD GTX1660 SUPER GDDR6 6GB W10 Gaming Bilgisayar', 'MSI AEGIS 3 9SC-236EU I7-9700F 16GB DDR4 512GB SSD+1TB HDD RTX2060 SUPER GDDR6 8GB W10 Gaming Bilgisayar', 'HERMES-A3660SX/AMD Ryzen 5 3600/ASUS TUF 3 GTX 1660 SUPER OC 6GB/16GB DDR4/240GB SSD/1TB Disk/Gaming Bilgisayar', 'Powered by ICUE-M10980KT/MSI RTX 2080 Ti GAMING Z TRIO 11GB/INTEL i9 10900K/32GB DDR4/2TB NVMe SSD/2TB DISK/Geforce RTX RayTracing PC', 'ATLAS-M3656XT/AMD Ryzen 5 3600XT/MSI RX 5600 XT MECH OC 6GB/16GB DDR4/500GB NVMe M.2 SSD/1TB DISK/Gaming Bilgisayar', 'EASTERGAMERS/ASUS ROG STRIX RTX 2060 Advanced Edition 6GB/AMD Ryzen 5 3600/16GB DDR4/500GB NVMe M.2 SSD/Geforce RTX RayTracing PC', 'TANK-A10460/ASUS ROG STRIX GTX 1660 SUPER Advanced Edition 6GB/Intel i5 10400/16GB DDR4/480GB SSD/1TB DISK/Geforce Espor PC', 'VESTA-A9656KT/Intel i5 9600K/ASUS TUF 3 Radeon RX 5600 XT OC EVO 6GB/16GB DDR4/240GB SSD/1TB DISK/Gaming Bilgisayar', 'HERMES-A3556XT/AMD Ryzen 5 3500X/ASUS TUF 3 RX 5600 XT OC EVO 6GB/16GB DDR4/1TB DISK/Gaming Bilgisayar', 'DA-SISTEM2/AMD Ryzen 5 3600/ASUS TUF 3 RX 5600 XT OC EVO 6GB/16GB DDR4/480GB SSD/Gaming Bilgisayar', 'WTCN-NUKE/ASUS TUF GTX 1650 SUPER OC 4GB/INTEL i3 10100/8GB DDR4/480GB SSD/Geforce Espor PC', 'VOK-IMPERIAL/AMD Ryzen 5 3500X/MSI RX 5600 XT MECH OC 6GB/16GB DDR4/480GB SSD/Gaming Bilgisayar', 'MARS-A1060K/ASUS ROG STRIX RTX 2060 Advanced Edition 6GB/INTEL i7 10700K/16GB DDR4/480GB SSD/2TB DISK/Geforce RTX RayTracing PC', 'ALPER RENDE-ANDROMEDA/AMD Ryzen 5 3600/ASUS ROG STRIX RX 5700 OC 8GB/16GB DDR4/480GB SSD/Gaming Bilgisayar', 'ALPER RENDE-CARRY/ASUS ROG STRIX RTX 2060 OC 6GB/AMD Ryzen 5 3600/16GB DDR4/480GB SSD/Geforce RTX RayTracing PC', 'RENDE-SUPREME/ASUS ROG STRIX GTX 1660 SUPER OC 6GB/AMD Ryzen 5 3500X/16GB DDR4/480GB SSD/Geforce Espor PC', 'TEKNOKING-2M/AMD Ryzen 5 3500X/MSI RX 5700 MECH GP OC 8GB/16GB DDR4/480GB SSD/Gaming Bilgisayar', 'MSI INFINITE X PLUS 9SE-297EU I7-9700K 16GB DDR4 512GB SSD 2TB 7200RPM HDD RTX2080 GDDR6 8GB W10 DVD Gaming Bilgisayar', 'MSI INFINITE X PLUS 9SD-450TR I7-9700K 16GB DDR4 256GB SSD 2TB 7200RPM HDD RTX2070 GDDR6 8GB W10 DVD Gaming Bilgisayar']
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- json - 如何在谷歌自定义搜索结果的 json 文件中获取元素值?
- javascript - 托管在 heroku 上的 Discord.js 音乐机器人在几分钟后崩溃
- powershell - SSRS Powershell 创建带参数的链接报表
- magento - rabbitmq/rabbitmq _erlang 连续运行或者每次输入命令
- reactjs - React 功能组件中如何触发 li 的 map onClick?
- php - 有没有最好的方法我可以选择每个主题的所有主题和问题并在 php 中显示它们
- sql-scripts - SQL如何将B表中的2列与表A中的一列进行比较,并且两者都必须在其中
- angular - Angular + Clarity:图标未正确加载
- sql - 带有 WHERE AND 的 SQL SELECT QUERY 不起作用
- sql - Postgres 删除级联