下面内容摘录自《用R探索医药数据科学》专栏文章的部分内容。
1)栏目后续章节的文章将深入概括R语言在临床研究和新药创新领域的应用,填补了国内R教材中尚未广泛覆盖的部分内容。
2)专栏每篇文章都在 5000 字以上,质量平均分高达 94 分。已发表章节也会增加新的文章,已发表的文章也会更新版本,可留意专栏内容和题目信息。
3)由于每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!看全文请点击下面链接。
欢迎订阅我们专栏
.......前面部分请点击上面链接看原文(原文6149字)
二、R的网络爬虫
网络爬虫(Web Scraping)是一种用于自动提取网页内容的技术。通过模拟浏览器行为,网络爬虫可以访问网站、读取网页源代码,并从中提取所需的信息。这种技术在数据分析、市场研究、学术研究等领域有广泛的应用,能够帮助用户从大量的网页中快速获取数据。
网络爬虫的基本工作流程可以分为以下几个步骤:
- 发送请求:向目标网站发送HTTP请求(如GET请求),以获取网页的HTML源代码。
- 解析网页:解析获取到的HTML源代码,找到需要提取的数据位置。这通常需要用到HTML解析器。
- 提取数据:使用选择器(如XPath或CSS选择器)提取所需的数据。
- 保存数据:将提取到的数据存储到本地文件、数据库或其他数据存储介质中,以便后续处理和分析。
但是,大家要注意,在使用网络爬虫时,必须遵守相关法律法规和网站的使用条款。一些网站明确禁止爬虫行为,或者要求用户获得许可后才能进行数据抓取。未经授权的大规模爬取可能会对目标网站造成负担,甚至导致法律纠纷。因此,在进行网络爬虫时,应该尊重网站的robots.txt文件,该文件规定了网站允许和禁止爬取的部分。
R语言作为一种强大的数据分析工具,也提供了多个强大的网络爬虫包,主要包括
rvest
、httr
和RSelenium
。
rvest
包是R语言中最受欢迎的网络爬虫工具之一,由Hadley Wickham开发,旨在简化网页抓取过程。它基于xml2
和httr
包,提供了类似于Python中BeautifulSoup
的功能,使得HTML文档的解析和数据提取变得简单直观。
httr
包是另一个用于网络爬虫的常用工具,它提供了强大的HTTP请求功能,可以轻松处理GET、POST、PUT、DELETE等请求。与rvest
不同,httr
更侧重于处理HTTP协议,使得用户能够更灵活地控制请求和响应。同时,对于需要处理JavaScript动态加载内容的网页,
RSelenium
是一个强大的工具。它基于Selenium WebDriver,可以模拟浏览器行为,从而抓取动态生成的网页内容。
记得我们需要安装并加载好rvest
包,假设我们要爬这个网页的信息,Star Wars films • rvestrvesthttps://rvest.tidyverse.org/articles/starwars.html
# 加载 rvest 包
library(rvest)
# 读取 HTML 页面
starwars <- read_html("https://rvest.tidyverse.org/articles/starwars.html")
# 查找与 CSS 选择器 "section" 匹配的所有元素
films <- starwars %>% html_elements("section")
films
#> {xml_nodeset (7)}
#> [1] <section><h2 data-id="1">\nThe Phantom Menace\n</h2>\n<p>\nReleased: 1999 ...
#> [2] <section><h2 data-id="2">\nAttack of the Clones\n</h2>\n<p>\nReleased: 20 ...
#> [3] <section><h2 data-id="3">\nRevenge of the Sith\n</h2>\n<p>\nReleased: 200 ...
#> [4] <section><h2 data-id="4">\nA New Hope\n</h2>\n<p>\nReleased: 1977-05-25\n ...
#> [5] <section><h2 data-id="5">\nThe Empire Strikes Back\n</h2>\n<p>\nReleased: ...
#> [6] <section><h2 data-id="6">\nReturn of the Jedi\n</h2>\n<p>\nReleased: 1983 ...
#> [7] <section><h2 data-id="7">\nThe Force Awakens\n</h2>\n<p>\nReleased: 2015- ...
# 提取每个 <section> 元素中的第一个 <h2> 元素的文本内容
title <- films %>%
html_element("h2") %>%
html_text2()
title
#> [1] "The Phantom Menace" "Attack of the Clones"
#> [3] "Revenge of the Sith" "A New Hope"
#> [5] "The Empire Strikes Back" "Return of the Jedi"
#> [7] "The Force Awakens"
# 提取每个 <section> 元素中的第一个 <h2> 元素的 data-id 属性值,并将其解析为整数
episode <- films %>%
html_element("h2") %>%
html_attr("data-id") %>%
readr::parse_integer()
episode
#> [1] 1 2 3 4 5 6 7
.....
欢迎订阅我们专栏,深度系统地学习R语言。
为帮助大家更出色地掌握临床统计、数据挖掘以及人工智能建模的入门知识和应用,由于众多同学在计算机编程上经验欠缺,特此开设《用R 探索医药数据科学》专栏。该专栏每周至少会定期更新三篇,直到整个专栏更新完成。每篇文章都在 5000 字以上,质量平均分高达 94 分。还要提醒大家的是,每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!
专栏《用R 探索医药数据科学》链接:https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482