【问题标题】:How to get html source code of a web page如何获取网页的html源代码
【发布时间】:2021-07-30 19:10:43
【问题描述】:

我正在使用 curl 从某个网站抓取 html 代码。然后他们更改了服务器设置,curl 无法再获取页面内容并给出错误代码 1020 然后我更改了我的脚本以使用 elinks

但他们现在再次使用 cloudflare 并且 elinks 不再有效(仅在此特定网站中)。它给出了相同的错误代码1020。

是否有任何命令行或选项可以使用其他浏览器(firefox、chromium、google-chrome...)并在终端中获取页面 html?

【问题讨论】:

  • 我刚刚测试了 puppeteer,同样的事情:错误 1020。

标签: curl web-scraping browser elinks


【解决方案1】:

如果您可以为Node.js 编写脚本,这里有一个使用puppeteer 库的小示例。它会在页面加载到无头(不可见)Chrome 中后记录页面源代码,其中包含页面脚本生成的动态内容:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

try {
  const [page] = await browser.pages();
  await page.goto('https://example.org/');
  console.log(await page.content());

} catch (err) { console.error(err); } finally { await browser.close(); }

【讨论】:

  • 不幸的是,它给出了与 curl 和 elinks 相同的错误代码 1020。要么这是他们的错误配置,要么他们真的很偏执。其他网站即使使用 cloudflare 也能正常工作
  • @NeoMosaid 有时以 headful 模式启动浏览器会有所帮助。我为此编辑了第二行代码。你也可以试试puppeteer-extra-plugin-stealth
  • SyntaxError: Cannot use import statement outside a module 。抱歉,我之前从未使用过 nodejs
  • @NeoMosaid 尝试将脚本文件扩展名更改为 .mjs — 然后 Node.js 会将其解释为具有现代语法的模块。
猜你喜欢
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2011-05-12
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多