ruby爬蟲抓取機(jī)鋒市場(chǎng)安裝包

聲明

此博客在簡(jiǎn)書創(chuàng)作,作者為海內(nèi)尋知己,其他站點(diǎn)有相同文章屬抄襲行為,請(qǐng)支持原創(chuàng)

介紹

小伙伴們?cè)诖罅渴褂镁W(wǎng)絡(luò)資源時(shí)會(huì)需要編寫爬蟲,現(xiàn)在國(guó)內(nèi)大部分編寫爬蟲使用的是python,博主沒有使用過(guò)python語(yǔ)言,自己寫爬蟲使用的是ruby.在此記錄一下如何使用ruby編寫功能強(qiáng)大、使用方便的爬蟲。

前期準(zhǔn)備

ruby編程環(huán)境(這個(gè)rubychina網(wǎng)站wiki里有詳細(xì)的教程

使用的ruby工具(各個(gè)gem)

Nokogiri,byebug(調(diào)試用),mechanize

Let's go

首先前往機(jī)鋒市場(chǎng)觀察下:

屏幕截圖 2017-01-08 20:46:43.png

確定市場(chǎng)url:http://apk.gfan.com

我們使用機(jī)鋒的搜索功能下載相關(guān)的app,確定它的搜索url(http://apk.gfan.com/search/學(xué)習(xí)_2.shtml):

屏幕截圖 2017-01-08 20:48:42.png

編碼起來(lái):

require 'nokogiri'
require 'open-uri'
require 'byebug'
require 'mechanize'


def download_app(app)
  begin
    detail_url = URI.escape(app.css('a').attr('href').text)
    doc = Nokogiri::HTML(open(detail_url))
    download_url = URI.escape(doc.css('#computerLoad').attr('href').text)
    agent = Mechanize.new
    file=agent.get(download_url,nil,referer=detail_url)
    file_name = file.filename
    File.open(file_name,"w") {|f| f.write file.body}
    return 1
  rescue Exception => e
    puts 'Download app Exception: '+e.message
  end
  return 0
end

begin
  base_url = 'http://apk.gfan.com'
  keyword = '學(xué)習(xí)'
  page = 1
  count = 5
  download_count = 0
  loop do
    search_url = URI.escape("#{base_url}/search/#{keyword}_#{page}.shtml")
    doc = Nokogiri::HTML(open(search_url))
    app_list = doc.css('.lp-app-list li')
    break if app_list.length == 0
    app_list.each do |app|
      download_count += download_app(app)
      break if download_count >= count
    end
    break if download_count >= count
    page += 1
  end
rescue Exception => e
  puts 'Main method Exception: '+e.message
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容