Привлечение данных продукта Homeedepot с использованием не общедоступного API GraphQL [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Привлечение данных продукта Homeedepot с использованием не общедоступного API GraphQL [закрыто]

Сообщение Anonymous »

Это код, который я использую, я в основном хочу получить цену продукта из разных магазинов, я имею в виду, что хочу построить сканер, чтобы поместить разные идентификаторы магазинов, и он получает цены из всех магазинов для этого конкретного продукта.

Код: Выделить всё

def func1():

import json
import requests

headers = {
"authority": "apionline.homedepot.com",
"method": "POST",
"path": "/federation-gateway/graphql?opname=productClientOnlyProduct",
"scheme": "https",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br, zstd",
"accept-language": "en-US,en;q=0.9,it;q=0.8",
"cache-control": "no-cache",
"content-length": "11172",
"content-type": "application/json",
"cookie": "AMCV_F6421253512D2C100A490D45%40AdobeOrg=MCMID|40920061203262528240348224432635813603; THD_PERSIST=; THD_CACHE_NAV_PERSIST=; thda.u=36d8a384-7ecf-2b06-7734-e936594ed1dd; _px_f394gi7Fvmc43dfg_user_id=ZWY0ZjMzZTAtZmNmZi0xMWVmLWIyOGItMDFiYjNmNDM0OGJh; ajs_anonymous_id=ad6fa4e9-8ac2-4898-afbd-7ef97a530fec; trx=5436161433999891084; QuantumMetricUserID=7c1703a046b1ab870405e8e9559404f1; _gcl_au=1.1.1875298573.1742401829; HD_DC=origin; thda.s=97e6fa64-327a-0fa3-cb73-e1505b186cfb; ads=8920f21205efc84e9aa9883b9619d419; _ga_9H2R4ZXG4J=GS1.1.1742993713.6.0.1742994858.60.0.0; _ga=GA1.1.430429979.1742401819; THD_NR=1; DELIVERY_ZIP=10005; DELIVERY_ZIP_TYPE=USER; forterToken=9657c64609084fdab98e7dc764ca717c_1743082805834_839_UDF43-m4_23ck_; QuantumMetricSessionID=b872f9e0f83cfae1017a1ef71bc5c67d; bm_ss=ab8e18ef4e; AKA_A2=A; bm_s=YAAQfEISAjmpP6aVAQAAC48q2gNzp3343XijFXJGZ95f4bIoasikP8c/6E29JnVXD4edSAniDgBcdbxRLMx2qnX/b7xvrN5bQL7Z/XTL0AGQTtdUAtQQHyHo4HIKCmoh5o/pciPMk57hirtPzyQjTzZLivEtHDzhrKwBLx468HGfGcBRgotEJwa0FxtYl2Tel+ciBeJriJfXp/2r//ikVr+FrazHn5on0EeavQ/D65Yh5lEEmW9S6DADfawIH1Pmh3drvFuSNuPq0ls0M9v+ZM5GciSl121cCxCPhZ6mBSd7zNBeXf8l6zh7ATXKAel8F7mEBPak35HqFSugvMf04MNVZ8q1QzBKgJ9t4MAj4DZQ7pZVU0LPQcCH3B3yxwXZoInTNPYvYc6z2eiy5qLQVvv2u4dmPwRBX9aPZq+l9GiEFaB3PPyB1SJRvxrzjm27aaPwM7QiM1RNOEPAaP4=; bm_so=1F1067047E2CD34B07451C6D2F7DCCB662541E5C7339C97A32796F97E8B9F12A~YAAQfEISAjqpP6aVAQAAC48q2gN890Y6VKLY3SZDSuyHIcyVdALI3GvDq78imeZ0BBHnBGAfa1x6hfo7ZjGuBvIp0IDXuiUZVmXfSXyaSXAStS2U8uapNyowf4+C3Q72kaB64zkqpESsOGE96Fbk3ByjKG/xKDS1yQwmkoggxVZa9X1pRhsNIfJpl67Fq7U+XWgpOgiqjwkDch8eCiCQd88MQEUTUgQSMOvVW9vlAkfyBRWk4H7Xl8FDb1DpGPdTQ9ctpHOW2ZgU8+CgxHG/oMFB85zDv3VQ3HT3TGFuJgO+APQt6eCu6fajEiXAkKcFbjuhWHQ7thhyFRiRIZbpqWvj9MPcU84Ns3Yq9vThNmFOpJWxHKrM5vkRgcKuQxGt3jvtW8pRf9Joq3fFu2XD/7BusQc5NPW3tBaZpJ8AbeiiO2EV7dpglkKdOFVFlosxZWuqgkCKUL34qLgvtgB2MIpy; bm_sz=F36A53604B2EFF3ADD09B85FCA4F1CD1~YAAQfEISAjupP6aVAQAAC48q2hssshKN/w04+LVngizUccL+Fvgur5JnUdtt3K/QQwYJl0Kky7oJg/MbuzIHILRFtKBDY+6Ifzhalk7PelXaYty/AVPywEt0Y6Jy2lmsDjI0lE3AyfbMOqiFiFZkQNcP5p8HBrwkiEXgk3UP1//YDLvoinQk2hb0wSnKe51sNKAnzp3BeMVCwJbtfm8cCzu6qtsIgGpU8QOC+IY7pTeq5cBStRpH3xr5Xw+uKgfk8vVPrc0RyD5WfxFnopwStAMk2JS4rzkUuowWcmwLOybfDGA7kFEj4QUqJ7jPyq3fjtLNBvAYGF6TosrnAnlBUO13rYpC4izMZ27XsWcovSDm1emwK2B2QgIV6Pwgv3iAY3jgFmWFZHEfXFglFBAJ2Ts=~3293753~3422520; _abck=47695A247A6A6CDAACFADDAB4F2983CD~0~YAAQfEISAtWpP6aVAQAAo5Qq2g0xdbthCQ17/vZDIMbVynuUDgB4VmnYvsgEpCxoNvrKb+qWuUIVfqF1F3gDdEV9PVedyacX0+02U4sIp2huyDP2TIgD+i/FmFPvBzUbH2Yxp7WeRVD5maTraN4rjBwmfBp7ZUyfnVUZsszFImoHv6ZXrlqSq2gh+YLiUb8DKhkig9VToH40tksuEkn068kPd63cxtCg0aSiUe85AFwcLPQ89cE6YpOTPb0Wiame2DUFHcSVingSFK38V47xJ9IzKqNoAYRagrvzylhO4+TysVV/Z7jgQrWVEDZvwQM/74iPqgj+EDPzBNZzv4z5rbFxwax3K5OTy3+aQ29+u0y+JfIjEUHnuqdCLr09LZfvRbzZ3P/NTSZq2jIwfOBzoq4LRZHHgmCPMbleENxWYJMlORSi6D5DpruQqtDRzpYBZ2/FWcl/qQDlf23Ga+qrPdWgas6NadY/OToVbRNYvfXtDYyh+loSb6E6mWrug4HTEMPTFnlIPYXuY9Twbr4yCNKI9ZQop/MlOHInKAf2D7Y0f3NXwOS1LQDrjaDpyaE8GGrSOEhQ/UNbdyHYAUK6Fhb2XRDoTZn2ruUkcZRaqsxNUeihkQr+rMmG64EKyPHKJI7+8udfJfcBzu+132Sk0X19lM4TczsIXXxQCyH36GWrzfl4Sys462lPa7Tt65J7ZM2flTHXs5ZYr3ixS1PHXw==~-1~-1~-1; kndctr_F6421253512D2C100A490D45_AdobeOrg_cluster=va6; kndctr_F6421253512D2C100A490D45_AdobeOrg_identity=CiY0MDkyMDA2MTIwMzI2MjUyODI0MDM0ODIyNDQzMjYzNTgxMzYwM1ISCPnxiN3XMhABGAEqA09SMjAA8AHRtKrR3TI%3D; THD_SESSION=; THD_CACHE_NAV_SESSION=; ak_bmsc=83582C9096925CD2B42AF5B52AB0EB33~000000000000000000000000000000~YAAQbEISAjoRYa6VAQAAV6Mq2hugrd4XVJYjPGpLHYxVlZ1W+HQIdHrjiQ8byArLksPJVtYM4uhCnCFtcuKJkAn5SwVK8MPccr/gJ2s+2q7jFKljby2y725UguSmkH5pTyO42N0RaDsBttJBUqEgn/TB6xgwdsvmHpGMFUM9bb6tfVE96F/fPXG1zVLtxULOUbhzYB/QkVbOjv9F1Ixelm2GcQgHbMcSr+sa4PC4dOk5gsKAHAEzMKb48SGGkffwutMyN553OQEWrLtyfeRgYX6UlFt50Blg6dbZb/tPt4MEZ3LAZ2GikOzFFU0yF2R5BGazxVyKNiqbpa3Ye1zGGjDjTVbkMT3l58LacvX02jQvKM5ULD+ktJx1jnDpkJ/UR9iudHapQa0J0aRHaC93Lbw+lWAvQkRs2sTw8xuDw1Dmv5JMU+BejfoODka5JXWhz4IeLm1pYonArFPgihc8wQ==;  THD_LOCALIZER=%257B%2522WORKFLOW%2522%253A%2522LOCALIZED_BY_STORE%2522%252C%2522THD_FORCE_LOC%2522%253A%25220%2522%252C%2522THD_INTERNAL%2522%253A%25220%2522%252C%2522THD_LOCSTORE%2522%253A%25224705%252BSouthcenter%2520-%2520Tukwila%252C%2520WA%252B%2522%252C%2522THD_STRFINDERZIP%2522%253A%252298188%2522%252C%2522THD_STORE_HOURS%2522%253A%25221%253B7%253A00-20%253A00%253B2%253B6%253A00-22%253A00%253B3%253B6%253A00-22%253A00%253B4%253B6%253A00-22%253A00%253B5%253B6%253A00-22%253A00%253B6%253B6%253A00-22%253A00%253B7%253B6%253A00-22%253A00%2522%252C%2522THD_STORE_HOURS_EXPIRY%2522%253A1743125586%257D",  # Truncated for brevity
"origin": "https://www.homedepot.com",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://www.homedepot.com/",
"sec-ch-ua": '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64;  x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
"x-api-cookies": '{"x-user-id":"36d8a384-7ecf-2b06-7734-e936594ed1dd"}',
"x-cloud-trace-context": "6650a67f833b4d7585f82af783f3a543/2;o=1",
"x-current-url": "/p/Latex-ite-4-75-Gal-Ultra-Shield-Driveway-Filler-Sealant-70691/100508445",
"x-debug": "false",
"x-experience-name": "fusion-gm-pip-desktop",
"x-hd-dc": "origin",
"x-parent-trace-id": "f9c9e27a461544e6218e9ad7f5e9222b/13316437098234969620",
"x-thd-customer-token": ""

}

url = "https://apionline.homedepot.com/federation-gateway/graphql?opname=productClientOnlyProduct"

params={

"opname":"productClientOnlyProduct"

}

payload={

"operationName": "productClientOnlyProduct",
"query": "query productClientOnlyProduct($itemId: String!, $dataSource: String, $loyaltyMembershipInput: LoyaltyMembershipInput, $skipSpecificationGroup: Boolean = false, $storeId: String, $isBrandPricingPolicyCompliant: Boolean, $skipFavoriteCount: Boolean = false, $configId: String, $skipPaintDetails: Boolean = true, $zipCode: String, $quantity: Int, $skipInstallServices: Boolean = true, $skipKPF: Boolean = false, $skipSubscribeAndSave: Boolean = false) { product(itemId: $itemId, dataSource: $dataSource, loyaltyMembershipInput: $loyaltyMembershipInput) { itemId dataSources identifiers { canonicalUrl brandName itemId modelNumber productLabel storeSkuNumber upcGtin13 skuClassification specialOrderSku toolRentalSkuNumber rentalCategory rentalSubCategory upc productType isSuperSku parentId omsThdSku sampleId roomVOEnabled __typename } specificationGroup @skip(if: $skipSpecificationGroup) { specifications { specName specValue __typename } specTitle __typename } availabilityType { discontinued status type buyable __typename } details { description collection { url name collectionId __typename } installation { serviceType leadGenUrl __typename } highlights __typename } media { images { url type subType sizes hotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } ocrHotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } altText __typename } video { shortDescription thumbnail url videoStill uploadDate dateModified link { text url __typename } title type videoId longDescription __typename } threeSixty { id url __typename } augmentedRealityLink { usdz image __typename } __typename } pricing(storeId: $storeId, isBrandPricingPolicyCompliant: $isBrandPricingPolicyCompliant) { promotion { dates { end start __typename } type description { shortDesc longDesc __typename } dollarOff percentageOff promotionTag savingsCenter savingsCenterPromos specialBuySavings specialBuyDollarOff specialBuyPercentageOff experienceTag subExperienceTag __typename } value original alternatePriceDisplay alternate { bulk { pricePerUnit thresholdQuantity value __typename } unit { caseUnitOfMeasure unitsOriginalPrice unitsPerCase value __typename } __typename } mapAboveOriginalPrice mapDetail { percentageOff dollarOff mapPolicy mapOriginalPriceViolation mapSpecialPriceViolation __typename } message preferredPriceFlag specialBuy unitOfMeasure clearance { value dollarOff percentageOff unitsClearancePrice __typename } conditionalPromotions { dates { start end __typename } description { shortDesc longDesc __typename } experienceTag subExperienceTag eligibilityCriteria { itemGroup minPurchaseAmount minPurchaseQuantity relatedSkusCount omsSkus __typename } reward { tiers { minPurchaseAmount minPurchaseQuantity rewardPercent rewardAmountPerOrder rewardAmountPerItem rewardFixedPrice maxAllowedRewardAmount maxPurchaseQuantity __typename } __typename } nvalues brandRefinementId __typename } __typename } reviews { ratingsReviews { averageRating totalReviews __typename } __typename } seo { seoKeywords seoDescription __typename } taxonomy { breadCrumbs { label url browseUrl creativeIconUrl deselectUrl dimensionName refinementKey __typename } brandLinkUrl __typename } dataSource favoriteDetail @skip(if:  $skipFavoriteCount) { count __typename } info { hidePrice ecoRebate quantityLimit categoryHierarchy sskMin sskMax unitOfMeasureCoverage wasMaxPriceRange wasMinPriceRange productSubType { name link __typename } replacementOMSID fiscalYear productDepartment classNumber hasVisuallySimilar forProfessionalUseOnly isSponsored sponsoredMetadata { campaignId placementId slotId sponsoredId trackSource __typename } globalCustomConfigurator { customExperience customButtonText customDescription customExperienceUrl customTitle customPosition __typename } augmentedReality sponsoredBeacon { onClickBeacon onViewBeacon onClickBeacons onViewBeacons __typename } customerSignal { previouslyPurchased __typename } isBuryProduct isGenericProduct returnable hasSubscription isLiveGoodsProduct paintBrand dotComColorEligible paintFamily gccExperienceOmsId isInStoreReturnMessageEligible movingCalculatorEligible label bathRenovation minimumOrderQuantity projectCalculatorEligible subClassNumber protectionPlanSku eligibleProtectionPlanSkus hasServiceAddOns consultationType pipCalculator { coverageUnits display publisher toggle defaultAdditionalCoverage additionalCoveragePercentage __typename } recommendationFlags { visualNavigation pipCollections packages ACC collections frequentlyBoughtTogether bundles batItems __typename } __typename } paintDetails(storeId: $storeId, configId: $configId) @skip(if: $skipPaintDetails) { colorDisplayName brandLogo colorType rgb { red green blue __typename } __typename } badges(storeId: $storeId) { endDate label name color creativeImageUrl message timerDuration timer { timeBombThreshold daysLeftThreshold dateDisplayThreshold message __typename } __typename } fulfillment(storeId: $storeId, zipCode: $zipCode, quantity: $quantity) { fulfillmentOptions { fulfillable type services { type locations { isAnchor locationId inventory { isOutOfStock quantity isInStock isLimitedQuantity isUnavailable maxAllowedBopisQty minAllowedBopisQty __typename } curbsidePickupFlag isBuyInStoreCheckNearBy distance state storeName storePhone type storeTimeZone __typename } deliveryTimeline deliveryDates { startDate endDate __typename } deliveryCharge dynamicEta { hours minutes __typename } hasFreeShipping freeDeliveryThreshold totalCharge deliveryMessage earliestDeliveryDate optimalFulfillment hasSameDayCarDelivery shipFromFastestLocation __typename } __typename } anchorStoreStatus anchorStoreStatusType backordered backorderedShipDate bossExcludedShipStates excludedShipStates seasonStatusEligible onlineStoreStatus onlineStoreStatusType fulfillmentBundleMessage fallbackMode sthExcludedShipState bossExcludedShipState inStoreAssemblyEligible bodfsAssemblyEligible __typename } installServices(storeId: $storeId, zipCode: $zipCode) @skip(if: $skipInstallServices) { scheduleAMeasure gccCarpetDesignAndOrderEligible __typename } keyProductFeatures @skip(if: $skipKPF) { keyProductFeaturesItems { features { name refinementId refinementUrl value __typename } __typename } __typename } bundleFlag sizeAndFitDetail { attributeGroups { attributes { attributeName dimensions __typename } dimensionLabel productType __typename } __typename } subscription @skip(if: $skipSubscribeAndSave) { defaultfrequency discountPercentage subscriptionEnabled __typename } seoDescription bundleSpecificationDetails { parents { parentId __typename } __typename } __typename } }",

"variables": {
"skipSpecificationGroup": False,
"skipFavoriteCount": False,
"skipPaintDetails": True,
"skipInstallServices": True,
"skipKPF": False,
"skipSubscribeAndSave": False,
"isBrandPricingPolicyCompliant": False,
"itemId": "100508445",
"storeId": "4705",
"zipCode": "10005"
},

"isBrandPricingPolicyCompliant": False,
"itemId": "100508445",
"skipFavoriteCount": False,
"skipInstallServices": True,
"skipKPF": False,
"skipPaintDetails": True,
"skipSpecificationGroup": False,
"skipSubscribeAndSave": False,
"storeId": "4705",
"zipCode": "10005"

}

response = requests.post(url, params=params, json=payload, headers=headers)

# Print response
print(response.text)
if response.status_code == 200:
print("Response JSON:", response.json())

func1()
Это ошибка, которую я получаю:
{'data': {'productClientonlyProduct': none}, 'error': [{'Сообщение': 'ProductClientOnlyProduct'}}}
я не знаю. DeepSeek также, но я не мог найти никакого решения, я не хочу использовать селен, так как он настолько медленный, я просто хочу использовать API, чтобы получить результаты быстрее.
Вы можете найти этот API на странице продукта:
Пример продукта: < /strong>
https://www.homedepot.com/p/latex-ite-4 ... 445образно Режим

вы найдете этот API легко:


Подробнее здесь: https://stackoverflow.com/questions/795 ... raphql-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»