我正试图从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
元素内的上面的一个元素)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_...=...
值。
使用findAll()可以获得多个组,并且需要通过egroup(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())
我一直试图从石头上取血。我正在寻找的数据根本不存在 - 该网站做了一些JS DOM操作。这样做的唯一方法(据我所知)是获取spConfig
JS代码并使用正则表达式从那里获取数据。我现在要摆弄正则表达式,感谢大家的想法和帮助!