首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在抓取网站后访问属性

如何在抓取网站后访问属性
EN

Stack Overflow用户
提问于 2020-11-30 04:55:47
回答 1查看 20关注 0票数 0
代码语言:javascript
复制
import requests,json
from bs4 import BeautifulSoup
from flask import Flask
from flask import request, jsonify
import os
from selenium import webdriver

def checkPriceMyntra(URL):
    headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
    a = requests.Session()
    res = a.get(URL, headers=headers, verify=False)
    soup = BeautifulSoup(res.text,features="html.parser")
    script = None
    #d =  soup.find_all("script")
    for s in soup.find_all("script"):
        print(s)

checkPriceMyntra("https://www.myntra.com/leggings/tag-7/tag-7-women-pack-of-2-solid-ankle-length-straight-fit-leggings/12335860/buy")

下面是soup.find_all(“脚本”)的一部分:

代码语言:javascript
复制
    <script type="application/ld+json">
                {
                        "@context" : "https://schema.org",
                    "@type" : "Product",
                    "name" : "TAG 7 Women Pack Of 2 Solid Ankle-Length Straight-Fit Leggings",
                    "image" : "https://assets.myntassets.com/h_1440,q_100,w_1080/v1/assets/images/productimage/2020/8/22/be9d5664-5467-475b-b4ea-470a5d64a5481598047122543-1.jpg",
                                "sku" : "12335860",
                                "mpn" : "12335860",
                                "description" : "TAG 7 Women Pack Of 2 Solid Ankle-Length Straight-Fit Leggings",
                                "offers": {
                    "@type": "Offer",
                                        "priceCurrency": "INR",
                                        "availability": "InStock",
                                        "price" : "899",
                                        "url": "https://www.myntra.com/leggings/tag-7/tag-7-women-pack-of-2-solid-ankle-length-straight-fit-leggings/12335860/buy"
                },
                    "brand" : {
                        "@type" : "Thing",
                        "name" : "TAG 7"
                                }


                }
            </script>

我想获取产品的价格吧这个脚本,怎么做到的..??我试过使用s.get(“价格”),s.price的“价格”,但都不起作用。

EN

回答 1

Stack Overflow用户

发布于 2020-11-30 05:13:45

price键("price" : "899")的值在第二个script标记下,因此尝试使用CSS Selector script:nth-of-type(2)选择第二个script标记,并使用json模块将其转换为dict

代码语言:javascript
复制
import json
import requests
from bs4 import BeautifulSoup


def checkPriceMyntra(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
    }

    soup = BeautifulSoup(
        requests.get(url, headers=headers, verify=False).content, "html.parser"
    )

    json_data = json.loads(soup.select_one("script:nth-of-type(2)").string)
    print(json_data["offers"]["price"])


checkPriceMyntra(
    "https://www.myntra.com/leggings/tag-7/tag-7-women-pack-of-2-solid-ankle-length-straight-fit-leggings/12335860/buy"
)

输出:

代码语言:javascript
复制
899
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65065083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档