使用Python抓取数据属性时遇到问题

时间:2019-10-22 15:24:22

标签: python web-scraping beautifulsoup

我正在使用来自终点线的页面来进行一个简单的web scraping项目。 我正尝试在网站上搜寻产品名称,品牌和价格,以导出到完整的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)

我的代码返回[]

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

1 个答案:

答案 0 :(得分:0)

我要说我是一个初学者,我无法解释为什么这行不起作用:

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

但是我尝试找到类“ product-card”,然后从attrs列表中选择“ data-brand”,如下所示:

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']

我希望这会有所帮助。