HarryZhu-7harryprince 谢谢您,是的,cookie没有写全,现在可以了。
- 已编辑
(各位老师,好,之前在网上看到一篇您写的用R软件爬虫的推文[https://mp.weixin.qq.com/s?__biz=MzI5NDY1MjQzNA==&mid=2247488261&idx=1&sn=a6eb1aa7e3aa3ae7065ce76adc124673&chksm=ec5ecc78db29456e20b444756f074bdb8859efd7522a6523aa1b6c469d3ae44f81e9dea222cc&mpshare=1&scene=1&srcid=1220rTg6mM4V3gCmfhVzhLzc#rd],我想问问如何利用R软件实现。R利用的httr包里面也有)
GET和POST函数,我仿造例子写了下代码:library(httr) #cookie <- 'AlteonP=A8KeEQnySd7Wkp8OMNsQTw$$;iplocation=%E5%8C%97%E4%BA%AC%E5%B8%82%7C0%7C0' cookie <- ' _u_=1; gr_user_id=40f8d796-9967-4f05-b8e9-5ad94b4fdbce; Hm_lvt_7226f1398a8a1aae74384b0f7635de6f=1545374993; AlteonP=A8KeEQnySd7Wkp8OMNsQTw$$; __RequestVerificationToken=HWDlXbsh0czOhNPjLp5-CBYhP4HOM_IJwBL0FJmEScxG60_bsLhoA8EQ6pQrxO-U_ql7ohw9Ti_LUQtHmYVm-Uh8rAmHo4BVjyOTKmgybXMjHXhkwfh8RxCE2TbaXC-LWzeLDUx2G6vFuk-iLDxElw2; gr_session_id_a58d28f5fdbbcb8b=566fb47d-7fac-46a0-b63c-899eb81d0acd; gr_session_id_a58d28f5fdbbcb8b_566fb47d-7fac-46a0-b63c-899eb81d0acd=true; Hm_lpvt_7226f1398a8a1aae74384b0f7635de6f=1545394443; iplocation=%E4%B8%8A%E6%B5%B7%E5%B8%82%7C0%7C0' headers <- c('Accept'='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Content-Type'='text/html; charset=utf-8', 'Referer'='http://www.pizzahut.com.cn/StoreList', 'Host'= 'www.pizzahut.com.cn', 'User-Agent'='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'Connection'='keep-alive', 'cookie'='cookie') payload<-list( pageIndex=1, pageSize=50 ) url <- "http://www.pizzahut.com.cn/StoreList" louwill1<-POST(url,add_headers(.headers =headers)) louwill2<-POST(url,add_headers(.headers =headers),body = payload, encode="json") content(louwill2)
上面命令没有下载到数据,请教各位。谢谢!
tctcab 您好!我发现在循环加了
Sys.sleep(10)
之后,还是会才存在这个问题。
比如我下载完shanghai的后,下载jiangsu的,把地址修改为
http://www.cbrc.gov.cn/zhuanti/xzcf/getPcjgXZCFDocListDividePage/jiangsu.html?current=然后接着用上面的程序
`
rm(list=ls())
library(rvest)
library(stringr)
library(stringi)
source("G:\\scrapweb.R")web1 = "http://www.cbrc.gov.cn/zhuanti/xzcf/getPcjgXZCFDocListDividePage/jiangsu.html?current="
web2 = list()
web3 = list()
for (i in 1:19){
web2[] = paste(web1,i,sep="")
page = read_html(web2[],encoding="UTF-8")
web3[] = page %>% html_nodes(".bookw3 a") %>% html_attr('href')
Sys.sleep(10)
}
`
提示错误:Error in open.connection(x, "rb") : HTTP error 403.
^IP又被禁止了。tctcab 谢谢您!这个方法可以。这里提的代理IP,您用过吗?
- 已编辑
各位老师,好!我想从网站http://www.cbrc.gov.cn/zhuanti/xzcf/getPcjgXZCFDocListDividePage/shanghai.html?current=爬取数据,发现多次爬之后就会被认为非法攻击这个网页,然后电脑ip被限制,不能访问这个网站。有没有办法可以用伪装浏览器或代理IP什么的解决?。下面是我写的代码:
`
rm(list=ls())
library(rvest)
library(stringr)
library(stringi)web1 = "http://www.cbrc.gov.cn/zhuanti/xzcf/getPcjgXZCFDocListDividePage/shanghai.html?current="
web2 = list()
web3 = list()
for (i in 1:10){
web2[] = paste(web1,i,sep="")
page = read_html(web2[],encoding="UTF-8")
web3[] = page %>% html_nodes(".bookw3 a") %>% html_attr('href')
}
`
执行上面例子会提示:Error in open.connection(x, "rb") : HTTP error 403.然后这个网页就打不开了。
在这个网站https://blog.csdn.net/tayangdang1058/article/details/81319094看到一个例子,
library(xml2)
User-Agent
library(httr)
h2<-'http://www.dianping.com/search/keyword/325/0_%E9%85%92%E5%90%A7/p3'
session = h2 %>% html_session(add_headers(="Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1")) %>% html_nodes("h4")%>%html_text()
不知道如何修改?请各位有经验的老师能否给点提示,谢谢!请教各位老师,我现在用quantreg包里面的nlrq函数跑模型,发现设置不同的初始值,结果可能出现截然不同,这个要如何处理?比如下面的例子,
n <- 1000
df <- 8
delta <- 8
x <- sort(rt(n, df))
u <- runif(n)
v <- -log(1 - (1 - exp(-delta))/(1 + exp(-delta pt(x, df)) ((1/u) - 1)))/delta
y <- qt(v, df)
Dat <- NULL
Dat$x <- x
Dat$y <- y
deltas <- matrix(0, 3, length(us))FrankModel <- function(x, delta, mu, sigma, df,tau) {
z <- qt(-log(1 - (1 - exp(-delta))/(1 + exp(-delta
pt(x, df)) ((1/tau) - 1)))/delta, df)
mu + sigma * z
}us <- c(0.25, 0.5, 0.75)
for (i in 1:length(us)) {
tau = us
fit <- nlrq(y ~ FrankModel(x, delta, mu, sigma, df = 8, tau = tau), method = "SANN",data = Dat, tau = tau,start = list(delta = 5, mu = 0, sigma = 1),trace = TRUE)
deltas[i, ] <- coef(fit)
}
改变dalta,mu和sigma的初始值,结果会变很大,有些系数会从正变为负。
- 请教各位,在遇到回归系数为负数时,在knitr如何比较好的输出公式
比如y = c + b1*x1 + error
`{r}
options(digits = 4)
n <- 100
x <- rnorm(n)
y <- rnorm(n)
fit = lm(y~x)
coef(summary(fit))
b = coef(fit)
`
上面回归方程中的斜率是r b[2]
,完整的回归方程为:$$ Y =r b[1]
+r b[2]
x$$
如果b[2]值为负数,比如b[1]=0.5,b[2]=-0.2,那就出现这样的情况
Y = 0.5 + -0.2x
这个如何处理比较好?
- [未知用户]
谢谢您的指导! - 比如存在一个矩阵,我想计算每两列的比值
我想用apply实现,比如myfunc <- function(x,y) { return(x[,y]/x[,y-1]) } m1 = matrix(c(1,2,3,4,5,6,7,8,9),nrow=3) myfunc(m1,2) ##第2列和第1列
但是提示错误,请各位老师请教!apply(m1,1,myfunc,y=2)
谢谢
- [未知用户]
我也想请教一下,如何利用ggplot2标注x^(1)=x^(2)=x^(3)这样的数学表达式形式?我
看到的例子都是只有一个等于号的,即x^(1)=x^(2),这个如何解决?谢谢您 - 请教各位老师,asbio中画出来的动画图能否保存在word中也能看到这个运行效果。
例如,library('asbio') X <- c(11.2,10.8,9.0,12.4,12.1,10.3,10.4,10.6,9.3,11.8) loglik.norm.plot(X,dist="norm",parameter="mu")
- [未知用户]
很好的方法,谢谢您。 - [未知用户]
非常感谢,我的原意就是从网页读取的,无奈水平有限,一直实现不了,才想到转换思路。
我还想请教下,就上面的例子,怎么只读取出Q3,Q2等字符?
- [未知用户]
谢谢您。
这个代码返回的是字符所在的位置,怎么返回具体的字符?
我用下面的代码
返回的是NA。问题出在哪?gregexpr('tmp_category_[0-9]+', res) res[gregexpr('tmp_category_[0-9]+', res)[[1]]]
- 各位老师,我想请教下一个问题,
比如有如下的txt文档,里面的内容:
</div> <script type="text/javascript"> handle_async_data('tmp_CitationScoreCard', 'CitationScoreCard'); </script> <span id="tmp_category_3" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q3</td> </tr> </table> <br/> <p class="overlayJCRtext" id="3_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_3", "category_3"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_3").show(); $("#source_title_3").hide(); </script> <script type="text/javascript"> if($( '#3_overlayJCRtext_PH' ).length != 0){ $('#3_overlayJCRtext_PH').html($('#3_tmp_overlayJCRtext').html()) } </script> <span id="tmp_category_2" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q3</td> </tr> </table> <br/> <p class="overlayJCRtext" id="2_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_2", "category_2"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_2").show(); $("#source_title_2").hide(); </script> <script type="text/javascript"> if($( '#2_overlayJCRtext_PH' ).length != 0){ $('#2_overlayJCRtext_PH').html($('#2_tmp_overlayJCRtext').html()) } </script> <span id="tmp_category_1" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q4</td> </tr> </table> <br/> <p class="overlayJCRtext" id="1_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_1", "category_1"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_1").show(); $("#source_title_1").hide(); </script> <script type="text/javascript"> if($( '#1_overlayJCRtext_PH' ).length != 0)
我现在想从中找出包括tmp_category_的,如tmp_category_3,tmp_category_2,tmp_category_1,然后保存到一个变量中。
我的想法是先读取到R中,
然后利用正则表达式,可是有一个问题,这样读取出来的res的长度为1,所以当做一个整体字符了。res <- readLines("lookfor.txt")
应该怎么解决这个问题?
谢谢 - 于 网页抓取又添利器[未知用户]
嗯,明白了,谢谢您的指点。 - 于 网页抓取又添利器
<div class="d4p-bbp-quote-title">zggjtsgzczh wrote:</div>回复 3 楼 的 ywh19860616:
谢谢您。楼主的例子,
看这里:http://www.r-bloggers.com/rvest-easy-web-scraping-with-r/
它有一个demo。
现在网页数据抓取的难度其实更多的是在怎样针对js这类数据的操作还有一些http底层的数据包的抓取操作。
score = html_text(web %>% html_nodes("span") %>% html_nodes("em"))
这里的html_nodes("em")没有看到哪里得到的。 - 于 网页抓取又添利器谢谢前辈提供的信息,大致明白了,我再看看。
- 于 网页抓取又添利器太厉害了
前辈,我想请教下您,
score = html_text(web %>% html_nodes("span") %>% html_nodes("em"))
year = web %>% html_nodes("p")
html_nodes括号里面应该怎么填的?比如您这里span,em及p,能请您解释一下吗?
谢谢您。 - [未知用户]
好的,谢谢前辈的指点。