用Python抓取数据属性时出现问题

2024-05-16 07:06:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个简单的web scraping项目,使用一个来自finishline的页面。 我试图刮产品名称,品牌和定价的网站导出到一个整洁的csv文件

这里是一个html代码的例子,我正在努力刮

<div class="product-card" id="itemprod797157_128" data-brand="NIKE" data-prodid="prod797157" data-productid="prod797157553558128" data-baseurl="/store/product/mens-air-jordan-retro-1-low-basketball-shoes/prod797157?" data-colordescription="White/Black/Starfish" data-styleid="553558" data-colorid="128">

我想删除data-brand属性,但遇到了一些问题

这是我的密码:

import pandas as pd
import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
data2 = requests.get("https://www.finishline.com/store/men/shoes/casual/_/N-1q3xsyk?icid=LP_mgl_C_menslpcategorycasualshoes_PDCT",headers=headers)
soup2 = BeautifulSoup(data2.text, 'html.parser')

main_column = soup2.find(id="mainColumn")

products = main_column.find_all(class_='product-card')

price = main_column.find_all(class_='fullPrice')

name = main_column.find_all(class_='product-name')

brand = [item['data-brand'] for item in main_column.find_all('class', attrs={'data-brand' : True})]

print(brand)

我的代码返回[]

如何刮取特定的数据品牌属性?


Tags: 代码importdatamainhtmlcolumnallfind
1条回答
网友
1楼 · 发布于 2024-05-16 07:06:27

我得说,我是一个完全的初学者,我不能解释为什么这行不行:

brand = [item['data-brand'] for item in main_column.find_all('class', attrs={'data-brand' : True})]

但我试着找到“产品卡”类,然后从属性列表中选择“数据品牌”,如下所示:

brands = [item.attrs['data-brand'] for item in main_column.find_all(class_="product-card")]

这将返回:

['NIKE', 'NIKE', 'NIKE', 'ADIDAS', 'NIKE', 'ADIDAS', 'NIKE', 'NIKE', 'NIKE', 'NIKE', 'NIKE', 'NIKE']

我希望这有帮助

相关问题 更多 >