抓取的目标网页源代码中找不到目标信息,是抓取的源代码还需要分析还是因为网页是动态所以没抓取到啊?
另外除了通过获取源代码还有其他方法进行网页资料获取吗?
如果网页上的内容是通过 js 加载,仅获取网页源码是不够的,可以考虑用 headless chrome 先加载网页,然后等 js 执行完毕了,网页内容稳定了,再把网页内容导出成 html,参考链接:https://developers.google.com/web/updates/2017/04/headless-chrome#cli
这网站得翻墙吧?打不开啊...而且这种操作和延迟抓取一样吗?
@明天周六了: 主要是需要让目标网页中的 js 代码执行完毕,这样通过 js 加载的内容才会输出到页面上
@不如隐茶去: 用谷歌的审查元素看网页上的目标信息是通过访问另一段URL得到的,这也算吗
@明天周六了: 你是指 iframe 标签嘛?这样的话也是最好用一个真实的浏览器去加载的。
@不如隐茶去: 源代码里没显示这个标签。如果想要获取类似谷歌审查元素里的源代码也是像你这么说的做吗?哪这和用selenium一个意思吗?没有什么方法能只用程序实现吗?
@明天周六了: 不借助外部软件实现这种功能的方法也是有的,但是至少都要依赖一个带有浏览器内核的第三方库,比如 Windows 上面的 IE 内核就可以作为一个控件加载到你的程序中,如果你想要跨平台,可以试试 CEF(Chromium Embedded Framework) 这种东西,也是可以作为一个库引用到程序中的。不过显然这么做会麻烦很多。不如 selenium 来得方便。
@不如隐茶去: 我现在是只知道有selenium这种方法,不过还没试过,这东西能用C语言编程吗?用它打开网页后又要怎么获取到动态网页的源代码?能用chrome浏览器然后得到审查元素里的源代码吗?
@明天周六了: 用 C 语言操作 selenium 当然可以,就是会挺麻烦的,具体如何获取网页源码,请看 selenium 的文档。
@明天周六了: 你可以参考一下 C++ 驱动 selenium 做网页自动化的样例:https://stackoverflow.com/questions/17345551/web-automation-from-c
可以看到直接用 C 语言调用 selenium 不怎么现实,可以运行一个 selenium Server,然后用 C 语言对这个 Server 发请求来进行操作。
@明天周六了: 刚刚试了一下可以用下面的命令抓取 IT之家的网页,连动态加载的广告都能捕捉下来:
./chrome --headless --virtual-time-budget=10000000 --print-to-pdf --disable-gpu --enable-logging https://www.ithome.com/html/it/361928.htm
或许你可以试试用 C 语言执行这条命令把网页一个一个导出成 pdf。
@不如隐茶去: 十分感谢