我試過這樣的網路抓取。我想從網站上的產品中獲取價格和名稱。
而且我不知道如何提取特定腳本包括“”產品詳細資訊 jason 行內腳本。”“<script type="application/ld json>"
所以使用 beautfulsoup 提取所有 jason 行內腳本資料并將其分配給腳本。我嘗試了多種方法來提取特定的一個腳本,但它不起作用。所以我嘗試對串列進行切片。
我使用索引來提取我想要的特定腳本。我選擇 index[6] 來隔離特定的腳本。我將變數分配給名稱“產品腳本”。
在我使用一些技術來拆分和提取價格和產品名稱之后。
但我想用另一種方法從 json 行內腳本中提取資料。
這是我的代碼:
def function_glomark_name(url_glomark):
global product_name_glomark
req2 = requests.get(url_glomark)
product_request(req2)
head_part = soup.find('head')
scripts = head_part.find_all('script')
product_script = scripts[6]
#Remove tags
pd_list = product_script.contents
for item in pd_list:
product_des = item
# make Dictionary
product_glomark= json.loads(product_des)
#Assign product_name_glomark
product_name_glomark = (product_glomark['name'])
print(product_name_glomark)
return product_name_glomark
glomark_coconut = 'https://glomark.lk/coconut/p/11624'
#呼叫函式后
function_glomark_name(glomark_coconut)
function_laughs_name(laughs_coconut)
輸出:椰子
uj5u.com熱心網友回復:
要決議特定內容,<script>您可以使用以下示例:
import json
import requests
from bs4 import BeautifulSoup
url = "https://glomark.lk/coconut/p/11624"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
s = soup.select_one('script[type="application/ld json"]')
data = json.loads(s.text)
for key, value in data.items():
print(f"{key=} {value=}")
print("-" * 80)
print(f'Name is {data["name"]}')
印刷:
key='@context' value='https://schema.org'
key='@type' value='Product'
key='productID' value='11624'
key='name' value='Coconut'
key='description' value='Coconut'
key='url' value='/coconut/p/11624'
key='image' value='https://objectstorage.ap-mumbai-1.oraclecloud.com/n/softlogicbicloud/b/cdn/o/products/310310--01--1555692325.jpeg'
key='brand' value='GLOMARK'
key='offers' value=[{'@type': 'Offer', 'price': '92', 'priceCurrency': 'LKR', 'itemCondition': 'https://schema.org/NewCondition', 'availability': 'https://schema.org/InStock'}]
--------------------------------------------------------------------------------
Name is Coconut
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/481052.html
