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(“脚本”)的一部分:
<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的“价格”,但都不起作用。
发布于 2020-11-30 05:13:45
price键("price" : "899")的值在第二个script标记下,因此尝试使用CSS Selector script:nth-of-type(2)选择第二个script标记,并使用json模块将其转换为dict。
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"
)输出:
899https://stackoverflow.com/questions/65065083
复制相似问题