R网络爬虫-RCurl包

RCurl这个程序包提供了由R到libcurl库的接口,从而实现HTTP的一些功能。例如,从服务器下载文件、保持连接、上传文件、采用二进制格式读取、句柄重定向、密码认证等等。
超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
URL详解:
基本格式:schema://host[:port#]/path/…/[?query-string][#anchor]
scheme指定低层使用的协议(例如:http, https, ftp)
hostHTTP服务器的IP地址或者域名
port#HTTP服务器的默认端口是80,这种情况下端口号可以省略。
path 访问资源的路径
query-string 发送给http服务器的数据
anchor-锚
getURL函数是一个基础get请求函数,其核心参数主要有URL、.opt、curl、.encoding。
URL就是请求的对应网址链接。
curl参数是一个句柄函数,它的参数指定对象是一个内嵌函数,通常是curl = getCurlHandle() ,getCurlHandle()函数内同样是配置信息,不过curl句柄函数内的所有配置信息是可以提供给全局使用的,多次携带,维持整个回话状态,相对于一组初始化参数,而.opt参数内的各项配置信息是当前get请求使用的,它会覆盖和修改curl句柄函数内的初始化信息(当没有提供.opt参数时,get请求仍然使用curl中的初始化参数。)
.opt是一个配置参数,它就收一组带有命名的list参数,这些通常包括httpheader、proxy、timeout、verbose、cookiefile(cookiejar)等配置信息。
.encoding是字符集编码,这个通常可以通过请求的相应头ContType获取。

install.packages(“RCurl”)
library(bitops)
library(RCurl)
#查看网址是否存在
url.exists(“http://www.baidu.com”)
#收集详细信息,可叠加
d = debugGatherer()
#verbose = TRUE 这时候,d v a l u e ( ) t e m p < g e t U R L ( " h t t p : / / w w w . d a t a g u r u . c n / " , d e b u g f u n c t i o n = d value()值是会叠加的 temp <-getURL("http://www.dataguru.cn/",debugfunction=d update,verbose = TRUE)
##注:cat(c(“AB”,“C”),c(“E”,“F”),“n”,sep = “/”)输出的是AB/C/E/F/n
cat(dKaTeX parse error: Expected 'EOF', got '#' at position 16: value()[3]) #̲提交给服务器的头信息 cat(…value()[1]) #服务器地址以及端口号
cat(dKaTeX parse error: Expected 'EOF', got '#' at position 16: value()[2]) #̲服务器端返回的头信息 dreset() # 清除d v a l u e ( ) d value() d value() # 清除之后全部为空
rm(d) #删除变量
#查看服务器端返回的头信息
##字符串形式
headers = basicTextGatherer()
txt=getURL(“http://www.dataguru.cn/”,headerfunction = headers u p d a t e ) n a m e s ( h e a d e r s update) names(headers value())#说明是字符串形式
headersKaTeX parse error: Expected 'EOF', got '#' at position 9: value() #̲##列表形式 h = basi…update)
names(h v a l u e ( ) ) h value()) h value()
##得到操作句柄
#查看curl请求的访问信息
curl = getCurlHandle()
d=getURL(“http://www.dataguru.cn/”, curl = curl)
names(getCurlInfo(curl))
#返回状态码
getCurlInfo(curl)KaTeX parse error: Expected 'EOF', got '#' at position 33: …CurlInfo(curl) #̲设置自己的header,把系统…update,verbose = TRUE)
cat(d$value()[3]) # 提交给服务器的头信息,发现设置成功
#以百度搜索”RCurl”为例,提取关键字符
character=c(“https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=99104831_hao_pg&wd=rcurl&rsv_pq=e7014d980004912f&rsv_t=79d3J4PYazc%2FLfuEvXt%2B%2F1W7JQd52LPPzmVhNnqvP21M1wpKUsg2PONpTYL3%2F5vtkJ%2Fay%2BGW&rqlang=cn&rsv_enter=1&rsv_sug3=1”)
#查看提交的参数
getFormParams(character)# 查看url的结构和值
tmp <- getForm(uri=“http://www.baidu.com/s”, ie =“utf-8”,f=“8”,rsv_bp=“0” ,rsv_idx =“1”, tn=“99104831_hao_pg”, wd=“rcurl” ,rsv_pq=“e7014d980004912f”, rsv_t=“79d3J4PYazc%2FLfuEvXt%2B%2F1W7JQd52LPPzmVhNnqvP21M1wpKUsg2PONpTYL3%2F5vtkJ%2Fay%2BGW”,rqlang =“cn” ,rsv_enter=“1” ,rsv_sug3=“1”)
#替换成新的搜索“dianying”
tmp <- getForm(uri=“http://www.baidu.com/s”, ie =“utf-8”,f=“8”,rsv_bp=“0” ,rsv_idx =“1” , tn=“99104831_hao_pg " , wd=”%E7%94%B5%E5%BD%B1" ,rsv_pq=“e7014d980004912f”, rsv_t=“79d3J4PYazc%2FLfuEvXt%2B%2F1W7JQd52LPPzmVhNnqvP21M1wpKUsg2PONpTYL3%2F5vtkJ%2Fay%2BGW”,rqlang =“cn” ,rsv_enter=“1” ,rsv_sug3=“1”)
write.table(tmp,“url.txt”)
curlEscape(“电影网购”)
curlUnescape(curlEscape(“电影”))
curlUnescape("%E7%94%B5%E5%BD%B1")

发布了30 篇原创文章 · 获赞 0 · 访问量 333

猜你喜欢

转载自blog.csdn.net/hua_chang/article/details/105036476