0

I'm trying to automate the looking up of prices on the website cardmarket.com. I thought I could simply use python's requests, but the HTML I get is totally different from what shows in my webbrowser. This is my code:

import requests
from bs4 import BeautifulSoup as bs

card = 'sol+ring'
url = f'https://www.cardmarket.com/en/Magic/Products/Search?idCategory=0&idExpansion=0&searchString=%5B{card}%5D&exactMatch=on&onlyAvailable=on&idRarity=0&sortBy=price_asc&perSite=1'
html = requests.get(url).text
soup = bs(html, 'html.parser')

print(soup.prettify())

This returns:

> <!DOCTYPE html> <html lang="en-US">  <head>   <title>    Just a
> moment...   </title>   <meta content="text/html; charset=utf-8"
> http-equiv="Content-Type"/>   <meta content="IE=Edge"
> http-equiv="X-UA-Compatible"/>   <meta content="noindex,nofollow"
> name="robots"/>   <meta content="width=device-width,initial-scale=1"
> name="viewport"/>   <link href="/cdn-cgi/styles/challenges.css"
> rel="stylesheet"/>  </head>  <body class="no-js">   <div
> class="main-wrapper" role="main">    <div class="main-content">
>     <noscript>
>      <div id="challenge-error-title">
>       <div class="h2">
>        <span class="icon-wrapper">
>         <div class="heading-icon warning-icon">
>         </div>
>        </span>
>        <span id="challenge-error-text">
>         Enable JavaScript and cookies to continue
>        </span>
>       </div>
>      </div>
>     </noscript>
>     <div id="trk_jschal_js" style="display:none;background-image:url('/cdn-cgi/images/trace/managed/nojs/transparent.gif?ray=7c2340c85dc337f2')">
>     </div>
>     <form action="/en/Magic/Products/Search?idCategory=0&amp;idExpansion=0&amp;searchString=%5Bsol+ring%5D&amp;exactMatch=on&amp;onlyAvailable=on&amp;idRarity=0&amp;sortBy=price_asc&amp;perSite=1&amp;__cf_chl_f_tk=Y.l_DDIwIQE4RfQbth8EL91OZUHtyRmRaw_VKrnp_II-1683229620-0-gaNycGzNC-U" enctype="application/x-www-form-urlencoded" id="challenge-form"
> method="POST">
>      <input name="md" type="hidden" value="am7bUf4.zdl4ChvYGJhF6.M4NncavvH4k1y3SWcjY40-1683229620-0-AZZwgHuQMPW_IbDZIr7VwvaK00tcVHHxq63Ae1132gHacl26HY1w9DWv_VSrApE0ORx4MEIuVw725CdeFGXb4ti-UJyQTbbMDoTZK2VoyJpEBka4I0Zxyk3LJ4cg7iQ9itCgqiNVotkMHLUOlNcgpralqPBiuk26ypioPZOpwqCXBM2J53Gub6sy_yUA_bXbMjPwNak-ggUcUgDj_lPnG7dkWYtHnoZU07PBtLcTRJH1bmI0zNOj32J7igDIHxxzolLtrVTcjv0u9mWFnQRu6hC-cjOcYzWoEBpdoFQvgy1QgcX9NOeQuGGp0bISvPn3eqrDDUd7qoPY-ds5TfyW7R0zzZCv8LWLmN3e33_tldzxO9J7CcO7Py16yoVxwDdsyS8eOq2oJT---2ydQyPDB_UNZneEb6lvKg2BtceEW1KUP1PLm-SfXqA6ri-KtLKuo0dC0ukZu8OGC3X2EF-_SHsbg8nDalCgqklgkVVqIC4ncWyzQafDqMEqOJf7Tbfy2pZ8N1Lh7XQKIXYp_4BsytNRRfNLlVO21KCWojaZKO4i379GAkWbDH-cPnT_pgYpFiOiX7FZmZUCmXrS8q7AaQIi9VHTlJLEim4jf7VXPZtsfeMB-gR6l8K5fkfuHcgFNoS0rFZ98dC0MQYLszDLHtstgEwjEWOVNJvqQhDS-6V1PnT6H6JSHeWZSbt6lHbN7LH3gbQx2eQSEh-Vw38BQOXWjS376esj9Q82pnfXdLhP4VO-nnDfUstsp3i58HhOvRbm83u5QhF7nkaJV0VntAXiJ9uMuQMEjMpB6J2u5hl5IT6dhV_vI4a-88EhiP_n4fjEVRaoNHrIhutZcMsJ_sFcX5rBa60Iah4X5Mrr58-O1JpCHcbEvF0AGB8JjzOwsXRuISnU_gVZ9ipJk6FOj-aUL5PqSc-u-9pe4EnV0MaRHBbt9MPcLdtQnga29efk5zFW-r8p92e8sCdwLQq5A4LmnjVUnBl5WbXLj-HMlyWJX8p4bRhhyhJUtITepDn25ioLj5SD4Hd0VrZElKLnm6YxGRpb8eJWRvbGEq-ZBZ_kGOLtNOhAZZF8FH2_rx8Rf5HY0z8lP3RJgQtC0KjqI-t35FT_ObXhdnVbie2VS4wzqkjPbl80jZBtpnj5_ZuM2FIHYmAX_9yQ76NhKbCnZMS7XGSArZKtV_4rxX3BAZwCrGwuk_cK_gdNp3722Qlfd0lkwFVtmQQ7lURF-PRkcyv2Q-fpm_VlYKIdMLY57gEhLx-V0MMBfApizHqjqhr_dLbo67erW3sZUG5pEBjBHlSCtI3EhunhevF3u7PiQNhKMzN7AnF6D_pFQNv5ylCs8nkGLSLIyFMb0-bL3e3hrDiCeRae6K8oF4bx1rV2IFejUU1zwBTm5MIf8NyWXtGfwO5jw89VUmp5f_JvBlJM_susCUMPxtrCxqlzAqXBretCtFX3hVBJJfCtzcgYQXVqLOzIkh75mcmrhQExO06I39dlUksZ172xzLmQ91TWf56HJyCQKjQkW5gcg9pnqx8q9DF6Sp4IH_QhdfYLpHuSoy6635qsBW0oVAslcYWidqD1CqZSpuPcFVBd_4vcple3u13ehtFSiC03txwBJ2sUTgbhRSVYJZkEGcph5CiapSMjU1jVS6931XcLlTQVdXZuPovOmuGA7lOBoFfEoQUGOSfoCQ609hsJqQbGKCV5RtZ4ma1XCNZ9LHrId93zfIhTwnNf7vJ4SHo4CUwI1LW5W3ie2P7B42qTQNWt2KQluSNqxF39OiFNC8oQer4aMhmzZGy9fKOw4tL3waEIkZe94jvx65Gb70chWUjqinHEHZufzryTpQys6qWurtf6iIjKrCNJKVvXlgtzDDNpZrk9AiI--xF2zrC4qpnF5iYeeMUXf8uHXdfmtl-eLN7Dd1iheKO23ceVI-drP-DETwyly9Hv_yZv_ceVO6Rk5O-GQXkdEhQVwCy1Oqn-1lFSVyppfrrxFM8WVXeeIrSUBiT_bvELaUEeWRSlwYI4vBQ5sLhr-eLNwOWASmMRce-3D2O0MfRFFxfAdVgqDARDEjXVKQROSRpfyUu6BmyLfrl0Hylz_CCmI_rMZDorcR6GVmUu8oHcqW6soP-__CBnH2JX-e3_fP1cmUDkmsll8Cla3LKZuo9HDzV1zhHY85OMCseRczmYAD78Xxb4T7oN4p4vh_CvTa8YJyYzl4xm69GmUo3cIW1_rVr9pxikLYsuum11AL09b49c-HejHprTjR04rFhsfbsKKEEvqDo92JFaq2pat26NN6xo4U_TyK7y-7Zc1s8kcfbouQO8V7I-VK-tK4ocxhnYuKXG9mAp3Ft6La8_gbv09y5YJrRXuk4wDojD_HYJlgVIlF1dSvziWeXC4BodxQbKbkUiT1INycsRVOppcaqv4hRtGSMywygFh7hGtBj_UIyMBJMP0p6ReP-A0R7GXmTYTCpu4JMwh2jVTT2_jLwPm0HSkpwAAO4DkynId3iiMOYQgNRjjGCRfiXnAUDtZTzcYliPZsOm1bVO4QY321flZA_DVBoB80yxgfqxUzJcTnFIS0oOUyZ_VVnr-_fAp9vnIVtd-UMGBsKjSlBtf3FbHPDI7y6SDwxrLzv4l0sf2x7F5pN9utJjdtzOu5-aolnzeLzKyZY9i0wb6eR7fCjvPmCbdNe0NbDnCfyHMVX6_pgvyRtO2lyI7NhdIIiKQj5sD5RhPtD34b4ySU1Lu0PXyTvlwKd05o72rWbT5aGcJzqL48kRuNteR8m3nWNo68F9sEDSNkMXXj7NaSBG_G_CDOgmZqNjw-gxFXYUTanE33coKwOGETpj3Z9v6Rr7fLA6saoN--jScaxedhe53kJQgJ5bwo-TiUn8yrTXQpGXiab0jPwFYk-B9nbEyYyICaNWgrdVmdFhuJC8HZnQ_iAdiRgUp0MyntSGu1uUNDqhYLsz70X6GJMSodmeGtyIRLxBjLoRNKGGbou0eJpY"/>
>     </form>    </div>   </div>   <script>    (function(){
>         window._cf_chl_opt={
>             cvId: '2',
>             cZone: 'www.cardmarket.com',
>             cType: 'managed',
>             cNounce: '59216',
>             cRay: '7c2340c85dc337f2',
>             cHash: '52201252631573f',
>             cUPMDTk: "\/en\/Magic\/Products\/Search?idCategory=0&idExpansion=0&searchString=%5Bsol+ring%5D&exactMatch=on&onlyAvailable=on&idRarity=0&sortBy=price_asc&perSite=1&__cf_chl_tk=Y.l_DDIwIQE4RfQbth8EL91OZUHtyRmRaw_VKrnp_II-1683229620-0-gaNycGzNC-U",
>             cFPWv: 'g',
>             cTTimeMs: '1000',
>             cMTimeMs: '0',
>             cTplV: 5,
>             cTplB: 'cf',
>             cK: "",
>             cRq: {
>                 ru: 'aHR0cHM6Ly93d3cuY2FyZG1hcmtldC5jb20vZW4vTWFnaWMvUHJvZHVjdHMvU2VhcmNoP2lkQ2F0ZWdvcnk9MCZpZEV4cGFuc2lvbj0wJnNlYXJjaFN0cmluZz0lNUJzb2wrcmluZyU1RCZleGFjdE1hdGNoPW9uJm9ubHlBdmFpbGFibGU9b24maWRSYXJpdHk9MCZzb3J0Qnk9cHJpY2VfYXNjJnBlclNpdGU9MQ==',
>                 ra: 'cHl0aG9uLXJlcXVlc3RzLzIuMjguMQ==',
>                 rm: 'R0VU',
>                 d: 'WLvKTceTT+DuPR8uR948I8oL77i021rpJCLo0JfsWXAVMBEzqjPF/jdWFbX/rDgR0cvGpxYh3cN0eYKLmmhgoI7MBHdtTPyG+GTjmCbf3ukbooQZ/NJOEL+rbfk8TF9nyrLAXbtngEgWzaj+LKbAUDP70MYFzDKWqHBBeN5kNyUSV84qVyNkc66zfQzkRJmgQOoSVP+U7i//debGl8DKED3B//eFnS8a3yLqTLdaGpY+32rMnWEvrtTRQ4HD8xnP5Ndwl6bl8/2Lwsq/8wTU9+GGmQ+Y6tXYly7ER4GAtojHEJcOw48AxzUfHgGN9Ri4NONX2RUzI+lKqocqSwSOiN1y97105KK6ky/v/Hq9y7t7K8gEhev+HbSouCzZN1VA0tprvqFwZ/1XfaEOd37lA3JawQrM2KTe026qS3CeqlJvmG3Xn+VcpYLCePIW5nUyGnTYP9MoaLcPG8S/l4gKX8eXuPkTFhxfRLCKw7gdLqjGOqNnNrEhFzs6UhfU1RCJzDIhlc8rnJYYJVcsSv0ZI2ihkAL6UHGLdH4K7pWvNsL63JlT5GzZQfztvDjr6a18Mo5+6wg/QMEHFn/K5hYVJG+AuSiC9iMjQZd0v/uZSSK28PbyFwqWYHqro7BIOLwU',
>                 t: 'MTY4MzIyOTYyMC41MzUwMDA=',
>                 m: 'QI/Mz0Ee6U2tVKO7oyUm1rnTFY08iHsGZZgBWD//pJE=',
>                 i1: 'oGBcx46C2eJTRsnYoBl9Fw==',
>                 i2: 'ivG0C3fNJlZus2SYpxYgWg==',
>                 zh: 'bc2S/gxmZ7DjY83P/aPZxKt97roKTKr5gTZltM5CslI=',
>                 uh: 'SLdVolODg++SO356HusO5I/hbfOpiiOxQXj62i/MUkA=',
>                 hh: '64fwn+JmY1843Sj+i34nu291prlb33wsol1q87ekECc=',
>             }
>         };
>         var trkjs = document.createElement('img');
>         trkjs.setAttribute('src', '/cdn-cgi/images/trace/managed/js/transparent.gif?ray=7c2340c85dc337f2');
>         trkjs.setAttribute('alt', '');
>         trkjs.setAttribute('style', 'display: none');
>         document.body.appendChild(trkjs);
>         var cpo = document.createElement('script');
>         cpo.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/managed/v1?ray=7c2340c85dc337f2';
>         window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;
>         window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length -
> window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' :
> location.search;
>         if (window.history && window.history.replaceState) {
>             var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;
>             history.replaceState(null, null, "\/en\/Magic\/Products\/Search?idCategory=0&idExpansion=0&searchString=%5Bsol+ring%5D&exactMatch=on&onlyAvailable=on&idRarity=0&sortBy=price_asc&perSite=1&__cf_chl_rt_tk=Y.l_DDIwIQE4RfQbth8EL91OZUHtyRmRaw_VKrnp_II-1683229620-0-gaNycGzNC-U" + window._cf_chl_opt.cOgUHash);
>             cpo.onload = function() {
>                 history.replaceState(null, null, ogU);
>             };
>         }
>         document.getElementsByTagName('head')[0].appendChild(cpo);
>     }());   </script>  </body> </html>

For the wanted HTML see cardmarket.com.

I have tried various things, like switching to other libraries like urllib3, in hopes that it is a requests specific problem, but the problem persists.

bob0815
  • 21
  • 4
  • "Enable JavaScript and cookies to continue" the message seems pretty straight forward. [This answer](https://stackoverflow.com/a/53919569/19330634) might help you – l -_- l May 04 '23 at 20:02
  • `requests` does not understand javascript. Nor does urllib3. You need to use some package that does understand javascript. Have a look at `requests-html`. – John Gordon May 04 '23 at 20:02
  • Looks a job for Playwright or Selenium or JS https://pptr.dev – Gilles Quénot May 04 '23 at 20:04
  • @JohnGordon it's a wrapper over https://pptr.dev? I saw `pyppeteer` on the pipy page – Gilles Quénot May 04 '23 at 20:09

0 Answers0