[问题] Rselenium网页爬虫循环问题

楼主: bearching (Pandora`s Box)   2019-01-29 15:18:37
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
===
02/11/2019补上更详细的问题叙述供参考
我目前想做的事情是在一个数据库上爬资料,
数据库是用网页呈现的,我的需求是复制搜寻数据库之后的结果,
该搜寻结果一页只会呈现35笔的资料,
所以如果搜寻结果总共20000笔的话我就会手动复制到天荒地老,
故打算用爬虫的方式复制资料,再转成excel可以读取的档案,之后再进行下一步分析
coding卡住的地方是我原本想要一笔资料就设定为一个变量,
35笔资料就有35个变量
locka与celestialgod的建议是,R的概念不是这样子的(也幸好不是,后来想想这样子抓
资料会很恐怖)
应该是设定一个list函数,再把资料储存到这个函数里面
我后来使用的是vector函数,然后把资料储存进去,
再输出为csv档:
a <-vector()
#中间复制资料的code略过
at <- matrix(a)
write.csv(at, file ="abc.csv")
======
我想要写的内容是,宣告jump.page当作网页的页码(从第2页开始)
每页有0~34行的内容,我用xpath定位这总共35行,
value是paste0(value ="//span[@id='tr_",m,"']"))
然后整个网页页面是从第2页到第10页
一样是用xpath定位网页上面的页码,value是
paste0(value ="//a[text()='",jump.page,"']"))
我想要问的事情是
1.take_m的这个宣告变量,我想要把m用循环的数字代换,但目前就是跳出"take_m"
这个变量而已,
这个目的想要的是把复制的文字记录在同一个变量(或是vector?)里面,
再print来看
2.我使用paste0()做这件事情,目前好像时好时坏,有时候会认不得我写的东西,
有时候又可以,请问有没有版友跟我发生一样的事情呢? 感谢
[程式范例]:
jump.page <- 2
while(jump.page <= 10){
for(m in 0:34) {
take_m <- remDr$findElement(using = "xpath", paste0(value =
"//span[@id='tr_",m,"']"))
take_m$getElementText()
}
web.link <- remDr$findElement(using = "xpath", paste0(value =
"//a[text()='",jump.page,"']"))
web.link$clickElement()
jump.page <- jump.page + 1
}
[关键字]:
爬虫 Rselenium 循环
作者: locka (locka)   2019-01-29 17:39:00
建议提供可以重现问题的程式码。不过我觉得原po可以练习使用*apply系列函数来写循环。如果我没理解错的话,你现在卡住的地方是在于想跑35次循环产生35个 take_m 变量,方便你查看每次的内容;可是R的逻辑在这里不太像一般的程式语言,举例来说如果你用result<- lapply(…)来做的话,回传值会是一个长度35的list,list中每个element就是每次的结果,这样只要用 result[index] 的方式就可读每次的结果了,根本不需要设35个变量。
作者: celestialgod (天)   2019-01-30 16:47:00
是不是用apply是无所谓,但是没有可以重现问题的程式码 实在无法帮忙....啊啊 原来原po要产生task_1, ...这样的变量? 原po请考虑用list存下task的资料

Links booklink

Contact Us: admin [ a t ] ucptt.com