【问题标题】:How to extract specific data from stcipt var?如何从 stcipt var 中提取特定数据?
【发布时间】:2021-04-01 08:34:10
【问题描述】:

以下是我要从中提取数据的页面中的部分 html 代码

<script type="text/javascript">
var productOptInfo = {
        prdNo: "3385792003",
        //lastPrc : 497500,
        optCnt: 5,
        selOptCnt: 3,
        entOptCnt: 2,
        selOptTyp: "01",
        optItemNms: 
        isOptCalc: false,
        isNotOptPrd: false,
        totStockQty: 9999,
        totPrdStckNo: "12951427057",
        totPrdPrc: "0",
        defaultOptQty: "1",
        optCheckStatus: "OK",
        orderOptArr: [],
        orderAddPrdArr: [],
        orderRecmPrdArr: [],
        isHighPrice: false,
        SPLIT_SEPARATOR: ":∥:"
    };

我的代码是..

import requests
from bs4 import BeautifulSoup
import re

url1 = 'http://www.11st.co.kr/products/3167879989'

req = requests.get(url1).text
soup = BeautifulSoup(req, 'lxml')
js = soup.find_all('script')[27].string
m = re.search(r'var productOptInfo = (.*?);', js, re.S).group(0)
print(m)

如何提取 "optCnt"、selOptCnt" 和 "entOptCnt" 的值? 我想得到值 5,3,2

【问题讨论】:

    标签: python beautifulsoup extract screen-scraping


    【解决方案1】:

    您可以安装 demjson 模块:https://pypi.org/project/demjson/ 并使用它来解析 javascript 对象 - 在这种情况下,您会得到一个字典。

    # note it's group(1)
    
    m = re.search(r'var productOptInfo = (.*?);', js, re.S).group(1)
    j = demjson.decode(m)
    
    >>> j['optCnt']
    2
    >>> j['prdNo']
    '3167879989'
    

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      相关资源
      最近更新 更多