;

1.方案一,动态获取渲染后的body高度 const dimensions = await page.evaluate(() => { return { width: document.body.scrollWidth, height: document.body.scrollHeight, deviceScaleFactor: window.devicePixelRatio }; }); await page.setViewport(dimensions); 代码放置在页面渲染成功,截图代码之前。 2.方案二,其实截图方法内自带相关的配置参数 await page.screenshot({path: ‘img/website.png’, fullPage:true});

puppeteer全屏截图 2019年6月19日
;

1.报错信息 (node:13852) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded 2.解决方法 const timeout = 180 * 1000 await Promise.all([ page.goto(‘http://website.com’, {timeout}), page.waitFor(‘body’, {timeout}) ]) 或者 await page.goto(‘http://website.com’, {timeout: 180000}) by default each time a page navigate to an url (page.goto) it waits for the event ‘load’ to be fired and by default it waits 30000ms, if the event (load) is not fired the page throw: Timeout Exceeded probably you are loading a heavy or slow page you should chan…

puppeteer报错’UnhandledPromiseRejectionWarning’ 2019年6月18日
;

安装 步骤一:新建目录puppeteerProject 步骤二:初始化项目npm init 步骤三:npm i puppeteer (此处需要下载Chromium,如果下载失败更换为cnpm) 中途会下载Chromium,大小300M 保存路径\node_modules\puppeteer\.local-chromium\win64-588429\chrome-win32 配置相关 const browser = await puppeteer.launch({ headless: false, // default is true 打开运行界面 executablePath: ‘C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chrome.exe’ // 在正式的chrome浏览器中运行代码 slowMo: 250 // slow down by 250ms }); launch参数详解 参数名称 参数类型 参数说明 ignoreHTTPSErrors boolean 在请求的过程中是否忽略 Https 报错信息,默认为 false headless boolean 是否以”无头”的模式运行 chrome, 也就是不显示 UI, 默认为 true executab…

puppeteer介绍 2018年9月28日
;

0×01 前言 前两天在百家号上看到一篇名为《反击爬虫,前端工程师的脑洞可以有多大?》的文章,文章从多方面结合实际情况列举了包括猫眼电影、美团、去哪儿等大型电商网站的反爬虫机制。的确,如文章所说,对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它;而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,高等学校网站的题目等。因为这些内容,往往是一个产品的生命线,必须做到有效地保护。这就是爬虫与反爬虫这一话题的由来。本文就以做的较好的“猫眼电影”网站为例,搞定他的反爬虫机制,轻松爬去我们想要的数据! 0×02 常见反爬虫 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。而作为程序员的我们只关心数据采集部分,处理什么的还是交给那些数据分析师去搞吧。 一般来说,大多数网站会从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式。前两种比较容易遇到,大多数网站都从这些角度来反爬虫,而第三种则相对比较特殊,一些应用ajax的网站会采用,这样无疑会增大了爬虫爬取的难度。 然而,这三种反爬虫策略则早已有应对的方法和策略。如果遇到了从用户请求的Headers反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Refer…

反击“猫眼电影”网站的反爬虫策略 2017年7月26日
;

1. 前言 对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,教育网站的题目等。因为这些内容,往往是一个产品的生命线,必须做到有效地保护。这就是爬虫与反爬虫这一话题的由来。 2. 常见反爬虫策略 但是世界上没有一个网站,能做到完美地反爬虫。 如果页面希望能在用户面前正常展示,同时又不给爬虫机会,就必须要做到识别真人与机器人。因此工程师们做了各种尝试,这些策略大多采用于后端,也是目前比较常规单有效的手段,比如: User-Agent + Referer检测 账号及Cookie验证 验证码 IP限制频次 而爬虫是可以无限逼近于真人的,比如: chrome headless或phantomjs来模拟浏览器环境 tesseract识别验证码 代理IP淘宝就能买到 所以我们说,100%的反爬虫策略?不存在的。 更多的是体力活,是个难易程度的问题。 不过作为前端工程师,我们可以增加一下游戏难度,设计出一些很(sang)有(xin)意(bing)思(kuang)的反爬虫策略。 3. 前端与反爬虫 3.1 font-face拼凑式 例子:猫眼电影 猫眼电影里,对于票房数据,展示的并不是纯粹的数字。 页面使用了font-face定义了字符集,并通过un…

反击爬虫,前端工程师的脑洞可以有多大? 2017年7月26日
;

那些你不知道的爬虫反爬虫套路 前言 爬虫与反爬虫,是一个很不阳光的行业。 这里说的不阳光,有两个含义。 第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫团队,甚至隐瞒自己有反爬虫团队的事实。这可能是出于公司战略角度来看的,与技术无关。 第二是,这个行业并不是一个很积极向上的行业。很多人在这个行业摸爬滚打了多年,积攒了大量的经验,但是悲哀的发现,这些经验很难兑换成闪光的简历。面试的时候,因为双方爬虫理念或者反爬虫理念不同,也很可能互不认可,影响自己的求职之路。本来程序员就有“文人相轻”的倾向,何况理念真的大不同。 然而这就是程序员的宿命。不管这个行业有多么的不阳光,依然无法阻挡大量的人进入这个行业,因为有公司的需求。 那么,公司到底有什么样的需求,导致了我们真的需要爬虫 / 反爬虫呢? 反爬虫很好理解,有了爬虫我们自然要反爬虫。对于程序员来说,哪怕仅仅是出于“我就是要证明我技术比你好”的目的,也会去做。对于公司来说,意义更加重大,最少,也能降低服务器负载,光凭这一点,反爬虫就有充足的生存价值。 那么爬虫呢? 最早的爬虫起源于搜索引擎。搜索引擎是善意的爬虫,可以检索你的一切信息,并提供给其他用户访问。为此他们还专门定义了 robots.txt 文件,作为君子协定,这是一个双赢的局面。 然而事情很快被一些人破坏了…

互联网中一半以上的流量都是爬虫?不,比这还多 2017年7月17日
;

摘要 对于大数据行业,数据的价值不言而喻,在这个信息爆炸的年代,互联网上有太多的信息数据,对于中小微公司,合理利用爬虫爬取有价值的数据,是弥补自身先天数据短板的不二选择,本文主要从爬虫原理、架构、分类以及反爬虫技术来对爬虫技术进行了总结。 1、爬虫技术概述 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1) …

网络爬虫技术总结 2016年7月20日