curl 如何获取网页的html源代码

cgfeq70w  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(127)

我正在使用curl从某个网站上 * 刮取 * html代码。然后他们改变了他们的服务器设置,curl不再可以获得页面内容,给出错误代码1020,然后我改变了我的脚本使用elinks
但他们现在再次使用cloudflare和elinks不再工作(仅在这个特定的网站)。并且它给出相同的错误代码1020。
是否有任何命令行或选项使用其他浏览器(火狐, chrome ,谷歌 chrome ...),并获得页面的html在一个终端?

igetnqfo

igetnqfo1#

如果你能为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(); }

字符串

kmbjn2e3

kmbjn2e32#

我提请您注意绕过保护cloudflare的代码和库:
库:

npm i puppeteer-extra puppeteer-extra-plugin-stealth puppeteer

字符串
nodejs:

const puppeteer = require('puppeteer-extra')
const pluginStealth = require('puppeteer-extra-plugin-stealth')
const { executablePath } = require('puppeteer')

const link = 'https://www.g2.com/'

const getHtmlThoughCloudflare = async (url) => {
  puppeteer.use(pluginStealth())
  const result = await puppeteer
    .launch({ headless: true })
    .then(async (browser) => {
      const page = await browser.newPage()
      await page.goto(url)
      const html = await page.content()
      await browser.close()
      return html
    })

  console.log(` HTML: ${result}`)
  return result // html
}

getHtmlThoughCloudflare(link)

相关问题