【问题标题】:Extracting Javascript Variable Object Data in Python and Beautiful Soup Web Scraping在 Python 和 Beautiful Soup Web Scraping 中提取 Javascript 变量对象数据
【发布时间】:2017-09-12 16:18:37
【问题描述】:

我目前可以从我使用请求然后 Soup 发送的发布请求中抓取 Javascript 数据。但我只想抓取产品 plu、sku、描述和品牌。我正在努力寻找一种方法来打印我需要的数据而不是整个脚本。这是我使用汤提取脚本后打印的文本。我将从多个帖子请求中抓取多个产品,因此块的想法并不适合。

<script type="text/javascript">
var dataObject = {

platform: 'desktop',
pageType: 'basket',
orderID: '',
pageName: 'Basket',
orderTotal: '92.99',
orderCurrency: 'GBP',
currency: 'GBP',
custEmail: '',
custId: '',
items: [

                {


                        plu: '282013',
                        sku: '653460',
                    category: 'Footwear',
                     description: 'Mayfly Lite Pinnacle Women&#039;s',
                     colour: '',
                     brand: 'Nike',
                     unitPrice: '90',
                     quantity: '1',
                     totalPrice: '90',
                     sale: 'false'
                }                                                       ]

};

如您所见,信息太多了。

【问题讨论】:

    标签: javascript python beautifulsoup python-requests


    【解决方案1】:

    这个怎么样:

    1. 您将捕获的文本分配给一个名为“chunk”的新多行字符串变量
    2. 列出您要查找的密钥
    3. 遍历每一行以检查该行是否有您想要的术语,然后打印出该术语:

      chunk = '''
      <script type="text/javascript">
      var dataObject = {
      .........blah blah.......
        plu: '282013',
        sku: '653460',
        category: 'Footwear',
        description: 'Mayfly Lite Pinnacle Women&#039;s',
        colour: '',
        brand: 'Nike',
        ..... blah .......
        };'''
      
      keys = ['plu', 'sku', 'description', 'brand']
      
      for line in chunk.splitlines():
        if line.split(':')[0].strip() in keys:
          print line.strip()
      

    结果:

    plu: '282013',
    sku: '653460',
    description: 'Mayfly Lite Pinnacle Women&#039;s',
    brand: 'Nike',
    

    您显然可以使用splitstripreplace 等类似的应用程序来清理结果。

    【讨论】:

    • 这确实有效,但我将提取多个产品,因此名称会改变等。如果这有意义
    • 用你的话来说,“名字”是我keys列表中的一个键吗?还是每个键的冒号后面的文本?
    • 我可以把完整的脚本发给你看看吗?可以帮助您了解问题所在。感谢您的帮助!
    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    相关资源
    最近更新 更多