[问题] Rvest 网络爬虫问题

楼主: iambakr (123)   2019-12-18 01:42:10
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
新手(没写过程式,R 是我的第一次)
[问题叙述]:
爬网页上的产品名称, 价格, 连结,以及每个产品连结网页里面的六个规格种类
然后合并成一个 13x9 的 data frame
但目前我有碰到以下几个问题,想请前辈帮忙
Q1: 产品价格可以成功爬到,可是价格中间的空格都无法去掉,只留下数字部分。看了一
下网页原始码价格有包含 &nbsp这段,想请问要如何单独提出里面的数字?
Q2: 我用for 循环可以爬到13个各别网页里面的六个规格,想请问要如何爬出规格然后变
成 13x6 的资料然后跟其他爬到的资料合并成一个 data frame?
Q3: 承上,我有尝试抓 html_table的方式,但跑出来就只有list()。请问我的写法是哪
边出了问题?
谢谢各位
[程式范例]:
https://ideone.com/QsX80K
[环境叙述]:
R version 3.6.2 (2019-12-12)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
[关键字]: Rvest, for loop, html_table
作者: xiangying (xiangying)   2019-12-18 03:25:00
1.用gsub将空格替换掉2看起来用rbind就做的到?
楼主: iambakr (123)   2019-12-18 22:37:00
Q1没办法直接将空格换掉,看起来是空格但里面其实还包含其他网页原始码 "&nbsp"Q2我有跑出来13个结果,但好像会一个接一个取代,以至于我看长度都只有6个...
作者: andrew43 (讨厌有好心推文后删文者)   2019-12-18 22:39:00
还是建议把实际的HTML档拿出来讨论。
楼主: iambakr (123)   2019-12-18 23:11:00
价格部分的原始码再这里 https://imgur.com/VwuBXeS网站短连结 https://bit.ly/2EHme4R
作者: andrew43 (讨厌有好心推文后删文者)   2019-12-18 23:43:00
1.用gsub吧。x <- "123&nbsp;456"; gsub("&nbsp;","",x)更正,gsub("\u00A0", "", x) 就可以了2. for之前先建好data frame,在for loop中把各项资料存入data frame中,而不是每次取值后就没事了。data frame每列为产品,栏可以是网址、spec等等东西。所以你应该从头改写,所有东西都存在一个data frame中而而不是各自独立的变量,这样整理起来会方便很多。https://ideone.com/VVRCnW&nbsp是HTML的特殊符号,而R得到后对应Unicode就是你看到的。网址相同不一定内容相同,不同时间去爬的关系把我相信你已经有办法处理其他内容中的nbsp了。
楼主: iambakr (123)   2019-12-20 00:06:00
感谢Andrew大!后来有照你的方法成功去除&nbsp了!请问有一段你的代码是gsub("\u00A0", "", .) 最后一个点代表什么意思呢? 是正则吗? 另外如果要爬多网页,网址规则是结尾=数字倍数方式,这样逻辑上是爬完第一页后,再用循环跑剩下页数然后一样丢进 data frame吗? 谢谢
作者: andrew43 (讨厌有好心推文后删文者)   2019-12-20 10:02:00
那个点是pipe后代表先前的回传值你说的扒多个网页我不了解意思,可以开新的讨论问。
楼主: iambakr (123)   2019-12-24 00:45:00
感谢Andrew大! 我再研究一下,真的不行再po文请教大家

Links booklink

Contact Us: admin [ a t ] ucptt.com