【问题标题】:I need help extracting a specific piece of text from a webpage我需要帮助从网页中提取特定文本
【发布时间】:2019-01-20 03:55:33
【问题描述】:

我正在尝试将此 html 文件中的 11101973 数字分配给一个变量,但需要一种仅在没有任何额外信息的情况下获取该数字的方法:

<div class="chooseSizeContainer" id="2SizeContainer" style="display:none;">
 <div class="chooseSizeLinkContainer active">
 <a id="US-13" href="javascript:void(0);"
 class="chooseSizeLink chooseSizeLinkActive"
 data-size="13"                                                 
 onclick="ProductDetails.changeSizeAffectedLinks(
 '11101973',
 '£ 135.95',
 '£ 135.95',
 '0',
 '£ 0.00saved!',
 '13',
 '13',
 '15',
 'false',
 'false',
 'false',
 'false',
 'unknown',
 'US-',
 '555088-015');">13</a>
 </div>

如果需要更多信息,页面来源在这里:view-source:https://www.kickz.com/uk/jordan-basketball-retro-air-jordan-1-retro-high-og-black_varsity_red_sail_university_blue-107840036 任何帮助表示赞赏!

【问题讨论】:

  • 请提供您正在使用的代码以及您尝试过的示例。谢谢!

标签: python web-scraping beautifulsoup python-requests


【解决方案1】:

beautifulsoup 用于解析 html 元素而不是 javascript 变量。那里很少有 javascript 解析器,但对于简单的任务,我更喜欢 Regex

import requests, re

page = requests.get(url).text
theNumber = re.search(r'collectAskInput\((\d+)).group(1)
print(theNumber)
# 11101973

它搜索里面的数字

onclick="return ProductDetails.collectAskInput(11101973)

【讨论】:

    【解决方案2】:

    它在源代码中作为脚本标记,您可以从中提取字典形式的字符串。

    import requests
    import bs4
    import json
    
    url = 'https://www.kickz.com/uk/jordan-basketball-retro-air-jordan-1-retro-high-og-black_varsity_red_sail_university_blue-107840036'
    
    response = requests.get(url)
    
    soup = bs4.BeautifulSoup(response.text, 'html.parser')
    
    scripts = soup.find_all('script')
    
    jsonObj = None
    for script in scripts:
        if 'ec:addProduct' in script.text:
            jsonStr = script.text
    
            jsonStr = jsonStr.split("ga('ec:addProduct',")[1]
            jsonStr = jsonStr.split(");")[-4]
            jsonStr = jsonStr.replace("'", '"')
    
            jsonObj = json.loads(jsonStr)
    
    id_var = jsonObj['id']    
    print (id_var)
    

    输出:

    print (id_var)
    107840036
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多