Splash在返回HTML响应之前不解析JS

2024-09-30 05:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的由Scrapy和Splash服务器组成的爬虫程序中,我在这个站点上遇到了问题:https://www.lavoropiu.it/offerte

这个问题与Splash在没有解析JS的情况下下载站点的HTML有关。该网站是一个有棱角的应用程序

我尝试了不同的飞溅设置:

splash.private_mode_enabled = false

splash.js_enabled = true

返回的HTML如下所示:

<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>Lavoropiu</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/chphsalvo/front-end-framework@0.9.3/dist/css/style.min.css">

<!-- Global site tag (gtag.js) - Google Analytics -->
<script type="text/javascript" async="" src="https://www.google- analytics.com/analytics.js"></script><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-173597693-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'UA-173597693-1', { send_page_view: false});
</script>

<link rel="stylesheet" href="styles.66ab468982a30141059e.css">
</head>
<body>

<script src="runtime.d6c52737d4587c65265f.js" defer=""></script>
<script src="polyfills.f782e0cdb7e1242a13e4.js" defer=""></script>
<script src="vendor.82696fd86eeed5072685.js" defer=""></script>
<script src="main.076dbf684e565ed2798b.js" defer=""></script>

<app-root></app-root>

</body>
</html>

如您所见,Splash在返回HTML之前不会执行页面上的脚本。 这是一个与飞溅有关的问题还是我错过了一些设置

谢谢你的帮助


Tags: httpssrchtmlwwwjslinkscriptcss
1条回答
网友
1楼 · 发布于 2024-09-30 05:21:53

Splash无法加载javascript。这是使用飞溅进行刮水时遇到的常见问题。检查issue page of Splash并进行一些搜索,有很多关于javascript加载问题的报告

Splash的默认引擎是Webkit。它的行为与Chrome、Firefox中常见的Web浏览器引擎不同。对于网页抓取,您最好选择headless Chrome来下载带有javascript的页面

对于与scrapy的异步集成,请尝试playwrightpuppeteer。前者有一个scrapy插件scrapy-playwright,目前正在维护


更新:Scrapy APIrender.html支持将引擎切换到“chromium”。但这是实验性的。你可以试一试

相关问题 更多 >

    热门问题