【问题标题】:Unable to get product id (Web Element) in python无法在 python 中获取产品 ID(Web 元素)
【发布时间】:2021-06-09 04:02:51
【问题描述】:

当我从 https://www.skechers.com/women/shoes/athletic-sneakers/?start=0&sz=168 抓取时,我的目标是获取所有产品 ID,但它无法打印

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd 
import time 
url = 'https://www.skechers.com/women/shoes/athletic-sneakers/?start=0&sz=168'
driver = webdriver.Chrome('D:/chromedriver')
driver.get(url)
pageSource = driver.page_source
soup = BeautifulSoup(pageSource, 'html.parser')
content= soup.find_all('div',class_='col-6 col-sm-4 col-xl-3 mb-2 mb-md-1 mb-lg-4 px-lg-3') 
skechersshoes=[]

for item in content:

    pid=item.select_one('div[data-pid="product"]')
    
    print(pid)
    skechers={
            'productid':pid
            
    }
    skechersshoes.append(skechers)
df = pd.DataFrame(skechersshoes)
print(df.head())
df.to_csv('skechers.csv')  

【问题讨论】:

  • 依赖项太多,我无法为您调试。循环是否执行了预期的次数?项目是否包含预期数据?
  • @Allan Wind 已更新并用红色标记突出显示
  • 它显示 data-pid 是一个数字,但您搜索 data-pid="product"

标签: python selenium beautifulsoup python-requests webdriver


【解决方案1】:

有几种方法可以联系到它:

1.通过 selenium 的工具,通过 xpath 和 class 查找所有元素:product:

products_elements = driver.find_elements_by_xpath("//div[@class='product']")

并在循环中获取 'data-pid' 值并将其放入列表中:

skechersshoes = [product.get_attribute('data-pid') for product in products_elements]

2.通过BeautifulsSoup,设置pageSource,然后find_all products:

products = soup.find_all(attrs={"class": "product"})

再一次,通过循环获取所有 'data-pid'

skechersshoes = [_id['data-pid'] for _id in products]

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多