楼主: 663973866
2602 7

[问答] 用R语言网抓数据文本@求助! [推广有奖]

  • 0关注
  • 4粉丝

已卖:725份资源

硕士生

94%

还不是VIP/贵宾

-

TA的文库  其他...

各种经济资料整理

威望
0
论坛币
1146 个
通用积分
3.9646
学术水平
2 点
热心指数
5 点
信用等级
4 点
经验
16556 点
帖子
126
精华
0
在线时间
239 小时
注册时间
2012-9-10
最后登录
2022-4-25

楼主
663973866 学生认证  发表于 2016-11-17 17:16:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. library(RCurl)
  2. library(XML)
  3. url="http://fangjia.fang.com/tj/"
  4. web=getURL(url,encoding="gb18030")
  5. htm=htmlParse(web,encoding="gb18030")
  6. node=getNodeSet(htm,path="//p[@class='mt5']/text()")
  7. city=sapply(node,xmlValue)
  8. city
复制代码
QQ图片20161117171556.png
想分别抓取这两行文本,存放成两列放data.frame(),求大师们出手,非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 Library Coding BRARY Frame library

沙发
johnmy 发表于 2016-11-18 00:42:31 来自手机
我用Rvest+selectorgadget 试了半天也不行。取不到值。
不知道怎么回事。

藤椅
663973866 学生认证  发表于 2016-11-18 09:39:57
johnmy 发表于 2016-11-18 00:42
我用Rvest+selectorgadget 试了半天也不行。取不到值。
不知道怎么回事。
哎 昨天取了一天没搞出来

板凳
663973866 学生认证  发表于 2016-11-18 16:15:30
请求帮忙

报纸
不懂不装懂 发表于 2016-11-20 13:38:26
这是图表数据,好像R没有好办法。这里有个笨办法,不知是否可用。
先确定数据所在。
在当前网页按F12>网络>XHR>刷新(按F5)>找到对应的网址
library(dplyr)
library(rvest)
require("XML")

URL = 'http://fangjia.fang.com/pinggu/Ajax/DefaultNewChartData.aspx?r=0.6556055881736629&cityshort=tj'
web <- readLines(URL,encoding="gb2312")

minimal <- read_html(web)
minimal %>% html_nodes("a") %>% html_text()

[1] "二手房11月均价22307元/㎡,环比:5.55%↑,同比:33.46%↑"
[2] "新房10月均价13414元/㎡,环比:1.55%↑,同比:23.13%↑"  

用其他的方法不能解决乱码问题。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
663973866 + 1 + 1 + 1 给100个赞 谢谢您

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
luzifer_li 发表于 2016-11-21 16:24:20
Following

7
luzifer_li 发表于 2016-11-21 16:24:32
其实 那个url从原来的网页里可以提取到。所以完全可以用R实现所有的步骤, 这样就可以自动化了。

  1. 'http://fangjia.fang.com/tj/'->ir
  2. library(httr)
  3. library(XML)
  4. library(dplyr)
  5. library(rvest)


  6. GET(ir)->inter1
  7. cat(content(inter1,'text'),file='tmp',sep="\n")
  8. htmlTreeParse('tmp', useInternal=T)->inter2
  9. getNodeSet(inter2,"//script[@language='javascript']")->inter3

  10. #####
  11. grep('chartdata',sapply(inter3, function(xxx) as(xxx,'character')),value=T)->inter4
  12. gsub(".*load(.*?)\\);.*","\\1",inter4)->inter5
  13. eval(parse(text=gsub(" \\+ ",",",paste('paste',gsub('Math.random\\(\\)','abs(rnorm(1))',inter5),',sep="")->wh'))))

  14. URL = paste('http://fangjia.fang.com/',wh,sep='')
  15. GET(URL)->what

  16. minimal <- read_html(content(what,'text'))
  17. minimal %>% html_nodes("a") %>% html_text()
复制代码

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
663973866 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
663973866 学生认证  发表于 2016-11-23 11:31:33
luzifer_li 发表于 2016-11-21 16:24
其实 那个url从原来的网页里可以提取到。所以完全可以用R实现所有的步骤, 这样就可以自动化了。
感谢,就是还没看懂,因为刚学R不久,我再好好研究一下

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 21:08