ruby nokogiri 数据抓取

后端开发   发布日期:2025年06月12日   浏览次数:107

记录测试代码

  1. require 'open-uri'
  2. require 'nokogiri'
  3. require 'pp'
  4. require 'json'
  5. weburl = {}
  6. weburl['sinawbo'] = 'http://hot.weibo.com/?leftnav=1' #新浪热门微博
  7. weburl['bk'] = 'http://www.qiushibaike.com/8hr/page/' #bk
  8. def getInfo(key,url)
  9. if key == 'sinawbo'
  10. pp 'SINAWBO~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
  11. doc = Nokogiri::HTML(open(url),nil,'utf-8') #获取页面数据对象
  12. doc.search("//div[@class = 'WB_feed']//div[@class = 'WB_feed_type SW_fun type_intimate feed_list']").each_with_index do |div,index|
  13. pp index
  14. webhref = div.css('div')[3]
  15. puts webhref.css('a').attr('href') #获取属性
  16. webtext = div.css('div')[4]
  17. pp webtext.text.encode('gbk')
  18. link = div.css('div')[5]
  19. if link.get_attribute('class') == "chePicMin S_bg2 bigcursor"
  20. pp link.css('img')[0].get_attribute('src') #获取属性
  21. end
  22. end
  23. elsif key == 'bk'
  24. pp "BK~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  25. for i in 1..10 do
  26. url1 = url
  27. url1 = url1 +i.to_s+'/'
  28. doc = Nokogiri::HTML(open(url1),nil,'utf-8')
  29. bkcontent = doc.search("//div[@class = 'content-block']//div[@class = 'col1']")
  30. tag = 1
  31. bkcontent.css('div').each do |info,key|
  32. if info.get_attribute('class') == 'content'
  33. pp tag
  34. tag +=1
  35. puts info.text.encode('gbk')
  36. end
  37. end
  38. end
  39. end
  40. end
  41. def main(arr)
  42. arr.each do |key,value|
  43. getInfo(key,value)
  44. end
  45. end
  46. main(weburl) #运行函数

 

 

输出内容为

  1. "SINAWBO~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  2. 0
  3. http://weibo.com/2210168325
  4. "【春晚节目单】【权威发布】经过蛇年春晚五次联排后的节目调整与修改,权威敲定版春晚节目单终于新鲜出炉。速速收藏之。三天后咱一起拿着节目单看春晚!最后啰嗦一句,虽是权威敲定版,也请以最终直播为准哈~"
  5. "http://ww1.sinaimg.cn/thumbnail/83bc7e05jw1e1ji3716ybj.jpg"
  6. 1
  7. http://weibo.com/nimui
  8. "昨天跟一朋友聊天,他问我:”你希望谈一个长久的吗?“ 我心里万般感触,回想了下自己的恋情,写下了这篇《谈一场不分手的恋爱》送给你们。"
  9. "http://ww1.sinaimg.cn/thumbnail/68f976d7gw1e1iqfkmv6ij.jpg"
  10. 2
  11. http://weibo.com/xiaopuwoxiaopu
  12. "“来年就交你啦!去保卫我泱泱中华大地吧!”——【新年好 >//////<,】(说好的年贺来了>v0(自娱自乐请别把图用于奇怪的地方拜托了OJZ||||"
  13. "http://ww4.sinaimg.cn/thumbnail/6af102betw1e1jmnbeuwvj.jpg"
  14. 3
  15. http://weibo.com/cqcb
  16. "【歌手朱哲琴珠峰录制MV时遇暴雪,已失踪10小时】5日晚7点50分,朱哲琴经纪人依兰在腾讯微博中发出求救称,西藏西南部迎来大到暴雪,前往珠峰拍摄MV的歌手朱哲琴及随队工作人员全部失踪,截止记者发稿时间,已经将近10个小时完全失去联系,天气恶劣再加物资匮乏,目前情况十分危急。"
  17. "http://ww3.sinaimg.cn/thumbnail/54a5e40djw1e1ivq6xwd4j.jpg"
  18. 4
  19. http://weibo.com/npss
  20. "来个微访谈吧,南派治愈问答。"
  21. 5
  22. http://weibo.com/chway888
  23. "赖昌星万里迢迢走私汽油,价格低于原来的市场价(不到3元),养肥了那么多位高权重的贪吏,养育了自己家乡所有55岁以上的老人,就这样居然还赚了几百亿。反观现在的两桶油,劣质汽油卖这么贵,居然天天喊亏。星哥,我每次加油时都会怀念你, 怀念你那博大的情怀。盼你早日出来东山再起!尼玛,加油! "
  24. "http://ww1.sinaimg.cn/thumbnail/72a1dda8jw1e1iv6auf6qj.jpg"
  25. 6
  26. http://weibo.com/xinhuashidian
  27. "【孩子,走哪儿我都举着你的照片】春节将近,詹本玉一家举着寻人启示坐在北京地铁上。这位来自四川的母亲说,11岁的大女儿周沁去年7月11日晚11时在北京石榴庄走失后,现在一家人走哪儿都举着寻人启示。孩子,你在哪儿?联系电话:13641120549、13683639846、18201577176。(记者朱立毅)"
  28. "http://ww1.sinaimg.cn/thumbnail/654b47dagw1e1jjqlqen8j.jpg"
  29. 7
  30. http://weibo.com/ibukisatsuki
  31. "《八一八我那刚入阵营的小恶人花从一次美丽邂逅到死情缘的全过程》。"
  32. "http://ww3.sinaimg.cn/thumbnail/6aa3df83jw1e1iweehvg3j.jpg"
  33. 8
  34. http://weibo.com/lastangel17th
  35. "对着春晚节目单(上半部分)画了点吐槽"
  36. "http://ww4.sinaimg.cn/thumbnail/69917555jw1e1jn49vfbqj.jpg"
  37. 9
  38. http://weibo.com/choiseongho
  39. "你们猜这谁?"
  40. "http://ww4.sinaimg.cn/thumbnail/a8ef5277jw1e1jc0ht7d2j.jpg"
  41. "BK~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  42. 1
  43. 作为一个山寨控,我经常把歌词乱改山寨化,今天洗完澡在房间换衣服。怒目凝视自己老二,突然情不自禁大吼而出…………啊啊啊啊啊啊给我一杯壮阳水,换我一夜不下垂!!!!!客厅坐的我姨妈我妈还有我姐。吼完之后我就我就没出卧室门!!!!!!
  44. 2
  45. lz一直坚信自己是一位好妹纸。。每看一条就点一个笑脸。因为快过年了,给个笑脸希望糗友们高兴一点。。妹纸只能帮这么多了。。。
  46. 3
  47. 刚才开会 对面那位主任从名字上就把我完爆地体无完肤
  48. 4
  49. 半碗面,两个蛋,若干蛋糕。这么多人一起生日见过吗?没见过给个笑脸吧。
  50. 5
  51. 最近很火的一句话,靠这个破10了。
  52. 6
  53. 就在刚才,去文具店买信封,老板笑了笑说这年头买信封没有用来写信的了。懂的点个笑脸吧。
  54. 7
  55. 朋友开出租车,今天被投诉了,原因是有个人要打车从青岛去天津,说打表,朋友说,你把我打成表我都不去。

 

 其他:如果遍历一个table tr 里的td时又出现th 可以这样处理

  tr.children.map do |c|
   c.text
   puts c
  end

 

以上就是ruby nokogiri 数据抓取的详细内容,更多关于ruby nokogiri 数据抓取的资料请关注九品源码其它相关文章!