如何使用Scrapy在“ cookie墙”后面刮取页面

时间:2019-02-16 17:12:05

标签: python cookies web-scraping scrapy

使用scrapy我想抓取此页面:

https://tweakers.net/categorie/496/laptops/producten/

第一次访问该页面时,它不会显示通常在该URL上找到的产品列表。而是显示另一个页面,要求用户接受网站的cookie。

如何使用Scrapy跳过此初始页面?

我已经找到了这个问题和答案,这听起来不错,但是我的理解太有限了,以至于不知道下一步该采取什么步骤来解决该问题。 How to bypass a 'cookiewall' when using scrapy?

这是第一页的html,要求用户在其上允许网站的cookie:

<!doctype html><!-- © 1998 - 2019 de Persgroep Online Services B.V. -->
            <html lang="NL">
            <head>
                <title>Tweakers</title>
                <meta http-equiv="content-type" content="text/html; charset=utf-8">
                <meta http-equiv="x-ua-compatible" content="IE=edge">
                <meta name="viewport" content="width=device-width, initial-scale=1">
                <link rel="stylesheet" href="https://tweakimg.net/x/styles/framework/main.css?1548760374">
                <style type="text/css">
                    body {
                        background: #4c4c4c url(https://tweakimg.net/g/cookies/bg.jpg) repeat-x;
                        min-width: 0;
                    }
                    #cookieContainer {
                        background: url(https://tweakimg.net/g/cookies/backdrop.jpg) no-repeat center top;
                        height: 1438px;
                        padding-top: 100px;
                    }
                    #cookieOverlay {
                        margin: 0 auto;
                        padding: 15px;
                        max-width: 460px;
                        background: #f9fafa;
                        border-radius: 2px;
                        line-height: 1.6;
                    }
                    #cookieOverlay ul {
                        padding-left: 18px;
                    }
                    #cookieOverlay img {
                        float: left;
                        margin: 0 15px 15px 0;
                    }
                    #cookieOverlay h1 {
                        margin: 10px 0;
                    }
                    #cookieOverlay p {
                        clear: both;
                    }
                    #cookieOverlay button {
                        margin-right: 5px;
                    }

                    @media (max-width: 767px),(max-device-width: 767px) and (orientation: portrait),(max-device-width: 499px) and (orientation: landscape) {
                        #cookieContainer {
                            padding-top: 0;
                        }
                    }
                </style>
                <script src="https://tweakimg.net/x/scripts/min/general.js?1549274572"></script>
                <script>
                    loadJS(
    'https://config-prod.choice.faktor.io/ec4dd53f-5731-40af-909f-c609b1960e3b/faktor.js',
    function(res)
    {
        if (res == 'loaded' && window.__cmp)
        {
            __cmp('acceptAll', function(data){});
        }
    }
);


                    function formSubmitActions(form)
                    {
                        // Log consent for IAB CMP framework
                        window.__cmp && __cmp('acceptAll');

                        return true;
                    }
                </script>
            </head>
            <body>
                <div id="cookieContainer">
                    <div id="cookieOverlay">
                        <img src="https://tweakimg.net/g/cookies/logo-50x50.png" width=50 height=50 alt="Tweakers logo">
                        <h1>Cookies op Tweakers</h1>
                        <br>
                        <h3>Tweakers maakt gebruik van cookies</h3>
                        <p>
                            Tweakers gebruikt cookies, JavaScript en vergelijkbare technologie onder andere om u een optimale gebruikerservaring te bieden. Ook kunnen we hierdoor het gedrag van bezoekers vastleggen en analyseren, en deze informatie toevoegen aan bezoekersprofielen.
                        </p>
                        <p>
                            Cookies kunnen worden gebruikt om op Tweakers advertenties te tonen en artikelen aan te bevelen die aansluiten bij uw interesses. Ook derden kunnen uw internetgedrag volgen, zoals bijvoorbeeld het geval is bij embedded video's van YouTube.
                        </p>
                        <p>
                            Cookies kunnen ook worden gebruikt om op sites van derden relevante advertenties te tonen. Dankzij cookies van derde partijen kunt u daarnaast informatie delen via sociale media, zoals Twitter en Facebook. Meer informatie hierover vindt u op <a href="https://tweakers.net/info/algemene-voorwaarden/cookies/">tweakers.net/cookies</a>.                           
                        </p>
                        <p>
                            Om pagina's op Tweakers te kunnen bekijken, moet u de cookies accepteren door op 'Ja, ik accepteer cookies' te klikken.
                        </p>

            <form id="cookieAcceptForm" method="post" action="https://tweakers.net/my.tnet/cookies/" onsubmit="return formSubmitActions(this)">
                <span class="nowrap"> <button class="fancyButton" name="decision" value="accept" type="submit" title="Ja, ik accepteer cookies">Ja, ik accepteer cookies</button></span>
                <input type="hidden" name="returnTo" value="MjM2MzkxODQwNTI4YmU0NGNlMGI4NTlmZTQyYmUxOTI1NzZlMDRiNg|https://tweakers.net/categorie/496/laptops/producten/">
                <input type="hidden" name="fragment" value="">

                <input type="hidden" name="tweakers_token" value="7WmTnuoWXGheXOWZPxKqdHyXLfI0utxNhXbI1HxJ">
            </form>
            <script>document.forms['cookieAcceptForm'].elements['fragment'].value=location.hash;</script>
                        <br>
                        <p>Klik <a href="https://tweakers.net/my.tnet/login/?location=https%3A//tweakers.net/categorie/496/laptops/producten/">hier</a> om in te loggen.</p>
                    </div>
                </div>
                <script>window.scrollTo(0,0);</script>
            </body>
        </html>

0 个答案:

没有答案