在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
都说Python爬虫功能强大,其实遇到动态加载或者登陆网站Python还是很困难,对于大部分的一些普通爬虫,R语言还是很方便。这里介绍R语言rvest包爬虫,主要用到函数:read_html()、html_nodes()、html_text()和html_attrs()。 安装这个包:install.packages('rvest')
以新浪内地新闻为例下面是新浪内地新闻网址:http://news.sina.com.cn/china/ 我们想要爬取每条新闻的标题、时间和对应的链接,因为点击标题,会触发链接,进入每条新闻内容页。 这是一些固定用法载入rvest包 这一页网址为: 下载这一页全部网页元素 鼠标右键==》"审查元素",可以看到这些信息所位于的网页标签,如下: 我们需要获取:(1)、新闻标题:"湖南“邵东伤医案”二审宣判 驳回上诉维持原判",位于<h2>标签下面的<a>标签里面的链接文本;
它们都位于最外面大的蓝色框:<div class="news-item">里面,所以对于这么大的网站页面,我们需要首先定位到<div class="news-item">,然后具体定位它下面的新闻标题、时间。这里“class="news-item"”表示网页元素<div>的类为“news-item”,用“.”表示类(如果遇到< div id="idName">就需要用#,即:div#idName): 可以理解为class名为news-item下的h2标签下的a标签,直接定位到粉红色框处。 定位到链接<a>标签 相当于:News <- html_nodes(web,'div.news-item h2 a')
News下就包含<a>标签的所有信息,包括链接、文本、一些其它样式; 获得新闻标题获得链接文本(也就是新闻标题) Title <- News%>%html_text()
获得的一些新闻标题长这样: 获得新闻时间为了便于对照查看,图再放一次: 时间位于上图中红色框住的标签:<div class="time">6月23日 19:17</div>,虽然它也位于<div class="news-item">里面,但是这个标签名唯一,直接定位就好。可以这样理解:查找计算机文件时,两个文件夹下面可能有同名文件,这时就需要定位到各自的文件夹才行;如果,没有相同文件,直接搜索文件名而不需要定位到文件夹就行了。 获得的时间是这样的: 获得新闻链接与第一步定位新闻标题一样:class名为news-item下的h2标签下的a标签,然后用专门函数html_attrs()获得链接。 获得的每个元素都是列表,比如第一个元素: 我们就需要,处理一下,每个元素有三个元素,取第一个就行了,于是:
保存为csv文件
示例代码
|
请发表评论