Python 刮伤';字典';从HTML文件顶部键入对象(文本束,不在类中)

Python 刮伤';字典';从HTML文件顶部键入对象(文本束,不在类中),python,python-2.7,web-scraping,beautifulsoup,scrapy,Python,Python 2.7,Web Scraping,Beautifulsoup,Scrapy,考虑以下源代码: 查看来源: 顶部有一个字典/JSON类型的文本,以“window.BC.product=”开头 假设我有这个页面的一个对象。我如何从上面提取文本并将其转换为python字典,以便从中提取特定数据 通过检查包含“window.BC.product”的文本来定位脚本 提取脚本内容后,使用正则表达式提取所需的javascript对象,然后通过json.loads()加载它以获取Python字典: import json import re from bs4 import Beauti

考虑以下源代码: 查看来源:

顶部有一个字典/JSON类型的文本,以“window.BC.product=”开头


假设我有这个页面的一个对象。我如何从上面提取文本并将其转换为python字典,以便从中提取特定数据

通过检查包含“window.BC.product”的文本来定位
脚本

提取脚本内容后,使用正则表达式提取所需的javascript对象,然后通过
json.loads()
加载它以获取Python字典:

import json
import re
from bs4 import BeautifulSoup
import requests

pattern = re.compile(r"window\.BC\.product = (.*);", re.MULTILINE)

response = requests.get("http://www.steepandcheap.com/gear-cache/shop-smartwool-on-sale/SWL00II-GRA")
soup = BeautifulSoup(response.content)   

script = soup.find("script", text=lambda x: x and "window.BC.product" in x).text
data = json.loads(re.search(pattern, script).group(1))
print data
印刷品:

{u'features': [{u'name': u'Material', u'description': u'[shell] 86% polyester, ... u'Zippered back pocket\r', u'Reflective details']}