【问题标题】:Website crawling: responses are different for postman and browser网站抓取:邮递员和浏览器的响应不同
【发布时间】:2023-03-28 09:54:02
【问题描述】:

我想抓取网站https://www.ups.com/de/de/shipping/surcharges/fuel-surcharges.page。在那里,该公司将他们添加到发票金额中的所有燃油附加费提供给他们。我需要这些信息来正确计算一些成本。不幸的是,UPS 目前不愿意定期向我发送可读格式的数据。于是,我想到了自己爬网站,自己获取信息。

不幸的是,当使用 postman 或我的爬虫工具 rcrawler 时,对站点的 GET 请求会隐藏数据表。我怎样才能欺骗网站像使用 chrome 浏览器一样返回所有数据?

例如,postman 中的标准层级成本表如下所示(仅包含列的标题,但没有值):

<div class="ups-contentBlock_wrap clearfix">
    <p>Der Standard Service Treibstoffzuschlag gilt f&uuml;r
        alle UPS Standard Sendungen. Die &Auml;nderungen des
        auf den n&auml;chsten Cent gerundeten Zuschlages
        werden am Montag jeder Woche wirksam und basieren
        auf den von der Generaldirektion der
        Europ&auml;ischen Kommission (ECDG) festgesetzten
        Verbraucherpreisen f&uuml;r Dieselkraftstoffe,
        einschliesslich der Z&ouml;lle und Steuern zweier
        Vorwochen. Der Zuschlag f&uuml;r die Woche vom 6.
        Februar 2017 basiert auf dem Dieselkraftstoffpreis
        f&uuml;r die Woche vom 23. Januar 2017.
        W&ouml;chentliche Aktualisierungen werden von der
        Generaldirektion Energie der Europ&auml;ischen
        Kommission (ECDG) f&uuml;r Energie und Verkehr im
        &Ouml;lbericht ver&ouml;ffentlicht.</p>
    <p>Der Treibstoffzuschlag f&uuml;r den UPS
        Standard-Service basiert auf den Angaben in der
        folgenden Tabelle:</p>
    <div class="ups-table fuel-surcharge">
        <table id="DieselFuelPriceStandardFuelSurcharge">
            <thead>
                <tr>
                    <th colspan="3">Dieseltreibstoffpreis
                        (EUR pro 1.000 Liter)</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <th>
                        <p>Mindestens</p>
                    </th>
                    <th>
                        <p>Aber weniger als</p>
                    </th>
                    <th>
                        <p>Zuschlag</p>
                    </th>
                </tr>
            </tbody>
        </table>
    </div>
</div>
<div class="ups-contentBlock_wrap clearfix">
    <p>Die H&ouml;he des Treibstoffzuschlags kann sich ohne
        vorhergehende Ank&uuml;ndigung &auml;ndern. Wenn der
        Treibstoffzuschlag &uuml;ber 14,50% ansteigt oder es
        zu &Auml;nderungen der Grenzwerte kommt, wird die
        obenstehende &Uuml;bersicht aktualisiert. Ungeachtet
        der durch die ECDG genannten durchschnittlichen
        Treibstoffpreise oder der obenstehenden
        &Uuml;bersicht werden die aktuellen oben
        ver&ouml;ffentlichen prozentualen Anteile des
        Treibstoffzuschlages f&uuml;r die festgelegten
        Zeitr&auml;ume ber&uuml;cksichtigt.</p>
</div>

将其与浏览器结果进行比较即可发现问题。

【问题讨论】:

  • 在我的机器上工作。您要在邮递员中访问的 URL 是什么?仅供参考:未经许可抓取其他人的数据是被列入黑名单的好方法。
  • 很有趣。我正在使用问题中引用的确切 URL。所以,例如在标准层级燃油附加费表中,您看到的是实际值,而不仅仅是列的标题?

标签: google-chrome web web-crawler postman rcrawler


【解决方案1】:

你只是在天真地下载网站源代码。

如果您在浏览器中打开开发者工具(通常是 F12)并打开“网络”选项卡,然后重新加载页面,您将看到发出的所有请求。

您会注意到几个 javascript 文件,并且在该列表的某处您还会看到一个名为 de.json 的文件。如果您查看该请求的响应表单,您会看到所有费率都显示为 json。

其中一个 javascript 文件会对此进行解析,并将该数据显示在您浏览器中的表格中。 Postman 没有 javascript 解释器;实际上确实如此,但它与网络浏览器的使用方式不同。所以请求整个页面不会显示这些数据。

但是,如果您 GET https://www.ups.com/assets/resources/fuel-surcharge/de.json,您将获得您想要的数据。

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2020-01-17
    • 2016-08-01
    • 2014-05-23
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多