当使用爬虫抓取网页时,一般只能获取到网页源代码,而无法获取到经过浏览器渲染后的页面内容。如果要获取经过浏览器渲染后的内容,需要使用一个浏览器渲染引擎(如Selenium)来模拟浏览器行为,从而获取到完整的页面内容。
另外,网站为了防止爬虫抓取数据,可能会采用一些反爬虫技术,如设置验证码、限制IP访问频率等。这些技术也会导致爬虫获取到的页面内容与浏览器中看到的不一样。1 先使用如下方式抓取页面内容
URL url = new URL(">我现在做的项目需要对于网站进行实时刷新和数据获取,
一开始没什么问题,可是有一天突然被警告说由于经常的刷新和访问页面导致对方的服务器崩溃了。。。
由于我也不需要访问的需求,所以要改进为不加载的刷新页面和数据获取。
在网站上搜寻无果,甚至,有的用puppeteer拦截器 来拦截关于的请求,十分头大
终于在google上找到了一个方法纯粹前端的js 是不能 跨域 获取 cookie的
xxxcom 的js 代码 只能得到 xxxcom的cookie,拿不到 yyycom
当然如果你有办法 在 yyycom 写入受到自己控制的 html文件,你就可以写代码去拿到 对应的cookie,但看你的需求 应该你没有yyycom 的权限
所以 要结合其他方案,推荐一下两种:
使用 electron ,electron 你可以认为是受js控制的浏览器引擎,所以你可以用它访问 yyycom 拿到cookie,再接着做你的事情
或者 使用 puppeteer(Google 官方出品的 headless Chrome node 库)
Puppeteer 提供了一系列的 API,可以在无 UI 的情况下调用 Chrome 的各种功能,适用于爬虫、自动化处理等各种情景。我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的>一般情况下,你应该多使用有头模式。
但问题在于,当我们要在 Linux 服务器上面使用 Selenium 或者 Puppeteer 运行爬虫的时候,就会发现有头模式始终会报错。这是因为,有头模式需要系统提供图形界面支持,才能绘制浏览器窗口,但是 Linux 服务器一般来说是没有图形界面的,所以有头模式一定会失败。
在这种情况下,为了能够使用模拟浏览器的有头模式,我们需要搞一个假的图形界面出来,从而欺骗浏览器,让它的有头模式能够正常使用。在 Linux 服务器中创建假桌面运行模拟浏览器有头模式。
经常使用 Selenium 或者 Puppeteer 的同学都知道,他们启动的 Chrome 浏览器分为有头模式和无头模式。在自己电脑上 *** 作时,如果是有头模式,会d出一个 Chrome 浏览器窗口,然后你能看到这个浏览器里面在自动 *** 作。而无头模式则不会d出任何窗口,只有进程。即使你不使用任何隐藏特征的技术,仅仅使用有头模式,你都会安全很多。如果网站不是非常严格的反爬虫,很多情况下,使用无头模式更容易被发现,但使用有头模式,更难被发现。用神箭手云爬虫,完全在云上编写和执行爬虫,不需要配置任何开发环境,快速开发快速实现。
简单几行 javascript 就可以实现复杂的爬虫,同时提供很多功能函数:反反爬虫、 js 渲染、数据发布、图表分析、反防盗链等,这些在开发爬虫过程中经常会遇到的问题都由神箭手帮你解决。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)