R语言学习笔记:网页爬虫

爬虫一定要确认是合法的!合法的!合法的!(重要的事情说三遍)
目前大部分顶级期刊不接受爬虫爬取的数据的论文投稿
用IMDB网站的乐高大电影网页作为例子:
https://www.imdb.com/title/tt1490017/

安装并调用rvest程序包

lego_movie = html ('https://www.imdb.com/title/tt1490017/') #输入网址
lego_movie %>% html_node ('strong span') %>% html_text() %>% as.numeric #调取评分信息

一个好用的工具:Chrome浏览器的扩展程序 Selectorgadget
可以通过点击网页的任何部分从而获得这一部分的html标签

演员表:

lego_movie %>% html_node ('#titleCast') %>% html_text ()

票房:

lego_movie %>%
  html_node('#titleDetails .txt-block:nth-child(12)') %>%
  html_text()

为了批量抓取数据,可以写一个循环:比如搁五秒重新访问一次网页,把最新的评论抓取下来

让R休息五秒:

Sys.sleep (5) #隔五秒重新访问一次网页

爬虫抓取下来的数据往往比较脏,需要对原始文本做一些处理:正则表达式

可以使用API
API:Application Programming Interface 应用程序接口,互联网公司分项数据的通道

Twitter为r提供的API程序包:rtweet/twitter
在推特developer里面注册账号,然后获得账号密码,从而进行操作

正则表达式非常适合清洗整理从网页上爬下来的数据,或者其他原始文本数据
例:data = '16 Oct 150.00 (TSLA1607J150)'
提取'16 Oct': '^\d\d\s\w\w\w'或者'\d+\s\w+'
提取TSLA:'\w\w\w\w'或者 '\([[:alpha:]]+)'

\d : 数码【0-9】
[[:alpha]] :字母【A-z】
\w : 数码和字母
\s : 空格
. : 除了\n(换行)以外全部
^ : 定位到文本开头
$ : 定位到文本结尾
+:至少一次,例如\w+

当数据不规则的时候 常用函数:
检查是否存在字符串:

str_detect (data, 'TSLA') #检查文本里是否有引号包含的字符串

提取字符串:

str_extract (data, "^\\d\\d")

正则表达式Cheatsheet
https://rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf

你可能感兴趣的:(R语言学习笔记:网页爬虫)