【问题标题】:Get the descriptions of product details in the script by BeautifulSoup and json通过 BeautifulSoup 和 json 获取脚本中产品细节的描述
【发布时间】:2021-01-25 10:26:37
【问题描述】:

我正在从网络上获取标签中产品详细信息的描述。

代码如下:

import re
import json
from bs4 import BeautifulSoup
import requests

url  = 'https://oldnavy.gap.com/browse/product.do?pid=599211032&rrec=true&mlink=5050,12413545,onproduct1_rr_3&clink=12413545#pdp-page-content'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
results = soup.find('script', id="pdpData").string
jsData = re.search(r'window.__ PRODUCT_PAGE_STATE __\s+=\s+', results)
data = json.loads(jsData.group(0))

我想要的部分xxxxx在脚本下面

window. __PRODUCT_PAGE_STATE __ = JSON.parse(xxxxx)

通过re.search找到window. __PRODUCT_PAGE_STATE __,还是无法到达xxxxxx部分。

有没有其他方法可以提取xxxxxx部分的信息?

【问题讨论】:

    标签: python beautifulsoup python-re


    【解决方案1】:

    试试这个:

    import re
    import json
    from bs4 import BeautifulSoup
    import requests
    
    url = 'https://oldnavy.gap.com/browse/product.do?pid=599211032&rrec=true&mlink' \
          '=5050,12413545,onproduct1_rr_3&clink=12413545#pdp-page-content'
    
    soup = BeautifulSoup(
        requests.get(url).content,
        "html.parser",
    ).find('script', id="pdpData")
    
    the_xxx_part = json.loads(
        re.search(r"\.parse\((.+)\);", soup.string, re.S).group(1).strip(),
    )
    print(json.loads(the_xxx_part)["productData"]["name"])
    
    

    输出:

    Unisex Faux-Fur-Trim Hooded Frost-Free Puffer Jacket for Toddler
    

    要打印整个 JOSN 对象,请编辑:

    print(json.loads(the_xxx_part)["productData"]["name"])
    

    进入这个:

    print(json.loads(the_xxx_part))
    

    【讨论】:

    • 这就是网页的title,可以单独使用BS获得,问题是获得description on product details tab
    • @Ananth 的输出只是为了说明脚本的 ENTIRE 内容已正确加载到 JSON 对象中,并且可以通过键访问。打印出the_xxx_part 以查看其他所有内容。
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2016-10-19
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多