首页 > 解决方案 > 无法使用 BeautifulSoup 提取 span 元素

问题描述

见下文。我正在使用 BeautifulSoup 来尝试提取这个值。我试过的:

pg = requests.get(websitelink)
soup = BeautifulSoup(pg.content, 'html.parser'
value = soup.find('span',{'class':'wall-header__item_count'}).text

我试过find,find all,它返回一个Nonetype。无论出于何种原因,这些方法都无法找到墙头项目计数,即使它出现在 HTML 中也是如此。我怎样才能得到这个值?谢谢!

在此处输入图像描述

标签: pythonhtmlbeautifulsoup

解决方案


我假设您想获取总项目数。该数字存储在 HTML 页面内的<script>. beautifulsoup没看到,但是可以用re/ jsonmodules来解压:

import re
import json
import requests

url = "https://www.nike.com/w"
html_doc = requests.get(url).text

data = re.search(r"window\.INITIAL_REDUX_STATE=(\{.*\})", html_doc).group(1)
data = json.loads(data)

# uncomment this to print all data;
# print(json.dumps(data, indent=4))

print("Total items:", data["Wall"]["pageData"]["totalResources"])

打印件(如果在我的国家/地区):

Total items: 5600

推荐阅读