YJY技能修炼

其他

R爬虫必备基础—动态异步加载

上一期简单说明了rvest为什么不用于动态网页的抓取,其中简单提及异步加载的动态网页,它属于动态网页的一种加载形式。一般来说,网页加载模式主要有两种:同步加载和异步加载。同步加载同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像)、渲染、代码执行。js
2020年6月21日
其他

R爬虫必备基础—rvest为什么不用于动态网页?

请求可能会导致新的资源的建立和/或已有资源的修改。4PUT从客户端向服务器传送的数据取代指定的文档的内容。5DELETE请求服务器删除指定的页面。6CONNECTHTTP/1.1
2020年6月20日
其他

R爬虫必备基础—HTTP协议

工作原理HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器有:Apache服务器,IIS服务器(Internet
2020年6月17日
其他

R爬虫必备基础—Chrome开发者工具(F12)

上一期介绍了SelectorGadget的使用,当时提及需要搭配浏览器开发者工具使用。今天呢,就来介绍浏览器开发者工具,这里以Chrome浏览器为例。Chrome开发者工具中,主要功能页面是:元素(ELements)、控制台(Console)、源代码(Sources)和网络(Network)。在爬虫实践中,ELements
2020年6月16日
其他

R爬虫必备基础——CSS+SelectorGadget

p则代表先选择id为container的节点,然后选中其内部的class为wrapper的节点,然后再进一步选中其内部的p节点。另外,如果不加空格,则代表并列关系,如div#container
2020年6月15日
其他

R爬虫必备——rvest包的使用

上一期R爬虫必备——静态网页+动态网页简单介绍了网页的类型。在实际R爬虫过程中,针对不同的网页,采取的爬虫方法也会有所不同。通常情况下,R爬虫涉及的R包主要有3个:rvest、Rcurl和httr。rvest抓取静态网页数据所谓静态网页,就是你打开一个目标网页,在网页里可以直接看到想要抓取的数据,点击鼠标右键查看源代码后发现在HTML结构中可以在本地找到刚刚在网页里的目标数据,这就是静态网页。对于这样的网页,rvest可以提供一套较为完整的数据抓取方案,配上一些小工具,就可以快速实现爬虫。Rcurl/httr包实现对网页动态加载数据的抓取对于网页动态加载的数据,继续使用rvest可能就不合适了。这时R提供了其他选择来实现相应的抓取目的。RCurl功能强大,但对初学者来说稍微有点难度。httr包相当于RCurl的精简版,相对轻巧易上手,功能虽不如RCurl那么齐全,但对于用户而言绝对友好。今天呢,主要从最简单的静态网页抓取R包——rvest开始,这款R包抓取静态网页的逻辑非常清楚,初学者可以很快理解和上手。下面简单看一下rvest数据抓取的几个核心函数:read_html():下载并解析网页html_nodes():定位并获取节点信息html_text():提取节点文本信息html_attr():提取节点属性信息rvest的这些函数如何使用呢?下面我们来简单看个案例——rvest包爬取链家网二手房信息,包括房子名字,房子具体信息(房型、面积、楼层等信息),房子地址,房子总价,房子每平方米单价等信息。简单点,只为演示作用,
2020年6月14日
其他

R爬虫必备基础——静态网页+动态网页

通过浏览器访问万维网中的某个网站时会从服务器得到一个超文本标记文档,然后浏览器将文档渲染后展示在显示器上,这就是我们得到的页面。页面中可以包含文本、图像、声音、FLASH动画、客户端脚本(JavaScript)和ActiveX控件等,有些页面还可以注册、登录以及显示当前用户的相关信息。R爬虫的爬取对象通常就是网页,我们需要对网页有基本的认识。浏览器从服务器得到的超文本标记文档的后缀通常分为两大类,静态页面:htm、html、shtml、xml;动态页面:asp、jsp、php、perl、cgi。两者的目标都是呈现内容给用户,都是用超文本标记语言(HTML)表示的,那两者间有什么不同?静态网页静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL,然后回车,浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的,现在纯静态网页比较少了。通常,使用HTML或XML即可完成静态页面的制作。特点静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,但不是以这些结尾的网页一定就是静态,还有一种伪静态的网页。静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;静态网页的内容相对稳定,因此容易被搜索引擎检索;静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;静态网页的交互性较差,在功能方面有较大的限制。页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面。减轻了服务器的负担,工作量减少,也就降低了数据库的成本。不足内容是固定的,交互性差,内容更新维护复杂。没有自动化的工具,维护大量的静态页面文件是不现实的。无法充分支持用户/客户的需求(外观选择,浏览器的支持,Cookie)。案例如素材中国,静态网页,整体结构清楚简单,从网址上判断,以html后缀结尾,是典型的静态网页。动态网页动态网页是相对于静态网页而言的。当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后在发送给浏览器(后面的处理就跟静态网页一样了)。很明显,动态网页中的“动态”是指服务器端页面的动态生成,相反,“静态”则指页面是实实在在的、独立的文件。动态网页的生成技术有多种,常见的有:HTML+JavaScript(Node.js);HTML+PHP;HTML+ASP.NET(或ASP);HTML+JSP等。特征动态网页一般以数据库技术为基础,可以大大降低网站维护的工作量;采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求。不足动态网站用到数据库,所以对数据库的安全和保密性要求较高,要专业技术人员提供维护才能保证网站的安全。动态网站不利于搜索引擎收录。且制作成本较高。案例如丁香通,是个动静态结合网站。下图则是由动态加载生成的网页,从网址上即可判断。再如Pubmed,输入关键词检索lncRNA,得到如下界面,网页地址不是以常规后缀结尾,同时页面信息显示不全,需要手动点击more显示数据,这是典型的动态网页。误区:会动的就是动态页面在HTML格式的页面上,也可以出现各种动态的效果,如.GIF格式的动画、FLASH、翻滚字母等,这些“动态效果”仅仅是有客户端呈现的视觉上的动态,与动态网页并不是同一个概念。和谐统一静态网页和动态网页各有特点,网站采用动态网页还是静态网页主要取决于网站的功能需求和网站内容的多少,如果网站功能比较简单,内容更新量不是很大,采用纯静态网页的方式会更简单,反之一般要采用动态网页技术来实现。静态网页是网站建设的基础,静态网页和动态网页之间也并不矛盾,为了网站适应搜索引擎检索的需要,即使采用动态网站技术,也可以将网页内容转化为静态网页发布。动态网站也可以采用静动结合的原则,适合采用动态网页的地方用动态网页,如果必要使用静态网页,则可以考虑用静态网页的方法来实现,在同一个网站上,动态网页内容和静态网页内容同时存在也是很常见的事情。总结一下静态网页和动态网页都是网页,目前纯静态的网页比较少了,大多以动态或动静态结合常见。静态网页不需要后台程序干预处理,直接由服务器返回,实现为静态网页后,一般不需要维护,因为数据不需要更新。动态网页一般需要程序处理(asp,jsp,php,python,ruby等等),并由数据库提供数据支撑。R爬虫学习过程,先从简单的静态网站开始,再慢慢实践动态网页。往期回顾R爬虫系列|工作需要衍生的笔记R爬虫必备基础——HTML和CSS初识长按识别二维码,关注"YJY技能修炼"
2020年6月13日
其他

R爬虫必备基础——HTML和CSS初识

网页是构成网站的基本元素,网页又是由一些更基本的元素构成。想要网络爬虫或多或少还是需要一点简单的html网页基础,尤其是网页布局,因为我们一般需要逐步定位我们需要内容所属标签,最终获得所需要的内容。点击打开目标网页(建议用Google
2020年6月11日
其他

R爬虫系列|工作需要衍生的笔记

出发点:工作多年,发现其实大部分时间在做重复性且毫无营养的事情,可怕的是工作多年才意识到这件事情。所以,爬虫的学习,初衷也是为了应对工作中重复性工作。下面举例说明:工作中,偶尔需要设计宣传单页、三折页和画册等宣传资料,每次交给外面做,成品也就那样,毕竟咱也不需要多专业的设计。因此,简单学习下,自己就可以干这部分宣传资料设计的活了。开展这类工作,我的方法就是选择好模板,然后将自家产品内容放上去,整体美观和谐即可。为此,经常浪费很多时间去找合适的模板,很累效率又低下,通过爬虫可以很好的解决这类工作。目前爬虫比较主流的是Python,但由于我之前完全没接触过Python,为了爬虫特地去学也是比较浪费时间的。退而求其次,R语言也可以爬取,而正好有R基础,相对可以较快的掌握。素材收集方法收集大号分享的各种素材(如单页、三折页、画册等),费时间批量爬取网站素材(目前能力也只能爬取免费素材)直接去淘宝或其他平台购买别人整理收集好的素材,费钱
2020年6月10日