我正试图从KicksUSA.com上刮擦鞋子的尺码,但似乎无法获得产品页面上显示的鞋子尺码。以该页面为例-https://www.kicksusa.com/jordan/air-jordan-13-retro-atmosphere-greyblack-white-univ-red-414571-016.html-我试图在此显示所有尺寸。
尺寸出现在我注意到的3个位置-
data-label
元素内的a
元素的div.input-box.validation-passed
属性(或者,如果我们在上面的元素中,dd.last
元素之内){li>
option
元素内,price
个元素0
等于select
spConfig
JS代码内任何从第一个位置(data-label
个元素的a
个属性)获取数据的尝试都导致了None
。
当我使用以下代码时:
size = soup2.find('dd', attrs={'class': 'last'})
getsize = size.find('select')
getgetsize = str([e.get_text() for e in getsize.findAll('option', attrs={'price': '0'})])
我什么也没得到,好像没有具有该属性的option
元素一样。
当我运行此代码时:
size = soup2.find('dd', attrs={'class': 'last'})
getsize = size.find('select')
getgetsize = str([e.get_text() for e in getsize.findAll('option')])
我只得到第一个结果,即Choose an Option...
有人知道如何获取我想要的数据吗?预先感谢。
编辑:这是绕过保护的代码段:
headers = {
'Host': 'www.kicksusa.com',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/72.0.3626.121 Safari/537.36',
'DNT': '1',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru,en-US;q=0.9,en;q=0.8,tr;q=0.7',
'Cookie': 'visid_incap_459049=Evije6RoRAG1GuxEpbckJA4Ch1wAAAAAQUIPAAAAAABk8hUjgpv63FQ2WQOlcukw; incap_ses_1079_459049=UXVgNfGObEuAWEiyCWH5DiGJm1wAAAAA4XovM6FTnjT4ZWyukyoWxw==',
}
data2 = requests.get(url3, headers=headers)
soup2 = BeautifulSoup(data2.text, 'html.parser')
您必须通过打开kicksusa.com并转到Cookies-> kicksusa.com
来编辑visid_incap_...=...
和incap_ses_...=...
值。
答案 0 :(得分:0)
使用findAll(),您可以获得多个组,并且需要通过e.group(0)来访问它们:
size = soup2.find('dd', attrs={'class': 'last'})
getsize = size.find('select')
for e in getsize.findAll('option')]):
l = len(e)
for i in l:
getgetsize[i] = str(e.group(i).get_text())
答案 1 :(得分:0)
我一直试图从一块石头上取血。我一直在寻找的数据根本不存在-该网站进行了一些JS DOM操作。据我所知,唯一的方法就是获取spConfig
JS代码并使用正则表达式从那里获取数据。我现在正准备使用正则表达式,谢谢大家的想法和帮助!