我需要帮助从网页中提取特定文本

2024-05-29 03:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将此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>

如果需要更多信息,页面源在这里:查看源:https://www.kickz.com/uk/jordan-basketball-retro-air-jordan-1-retro-high-og-black_varsity_red_sail_university_blue-107840036 感谢您的帮助!你知道吗


Tags: 文件方法divnone信息idfalsestyle
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

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)

相关问题 更多 >

    热门问题