动态ip教你如何用爬虫渲染前端页面!很久以前,几乎大部分网站都是由后端进行渲染的,即在服务器端组装完整的HTML页面,然后将完整的页面返回前端进行显示。最近,随着AJAX技术的不断普及和AngularJS等SPA框架的广泛应用,越来越多的页面在前端呈现。
不知道大家有没有听说前端渲染相比后端渲染不利于SEO,因为对网页爬虫不友好。原因是前端渲染的页面需要在浏览器端执行JavaScript代码(AJAX请求)来获取后端数据,然后才能组装成完整的HTML页面。
目前针对这种情况的解决方案有很多,最常用的是PhantomJS、puppeteer等无头浏览器工具,相当于在网络爬虫中构建一个浏览器内核,先对抓取的页面进行渲染(执行Javascript脚本),然后对页面内容进行抓取。
但是,要使用这种技术,通常都需要使用Javascript开发网络爬虫工具,这对于像我这样习惯于编写Python的人来说,确实很痛苦。
直到有一天,god kennethreitz发布了开源项目requests-html,在项目介绍中看到了FullJavaScriptsupport这句话!眼泪夺眶而出,就是这样!该项目在GitHub上发布不到三天,明星数量就达到了5000多位,可见其影响力。
requests-html为什么这么受欢迎?
几乎所有写过Python的人都会使用这样的HTTP库作为请求。毫不夸张地说,它是最好的HTTP库(不限于编程语言),它的引入也是当之无愧的,HTTPRequestsforHumans。因此,蝗虫和HttpRunner都是基于请求开发的。
而requests-HTML是kennethreitz基于请求开发的另一个开源项目。除了重用请求的所有功能外,它还实现了html页面的解析,即支持Javascript的执行,并使用CSS和XPath提取HTML页面元素,这些都是编写网络爬虫工具非常必要的功能。
在Javascript执行方面,requests-html没有构建自己的轮子,而是依赖pyppeteer作为开源项目。还记得前面提到的木偶师项目,是GoogleChrome对NodeAPI的官方实现;pyppeteer项目相当于使用Python语言对木偶师的非官方实现,几乎具备了木偶师的所有功能。理清了以上关系,相信大家对requests-html会有更好的理解。
在用法上,requests-html也很简单,它的用法和requests几乎一样,只是它有更多的呈现功能。
动态IP模拟器
执行render()后,返回的是呈现的页面内容。