2013-07-22 10 views
6

Sto usando Nokogiri per tirare le <h1> e <title> tag, ma sto avendo difficoltà a raggiungere questi:Come analizzo e graffio i meta tag di un URL con Nokogiri?

<meta name="description" content="I design and develop websites and applications."> 
<meta name="keywords" content="web designer,web developer"> 

ho questo codice:

url = 'https://en.wikipedia.org/wiki/Emma_Watson' 
page = Nokogiri::HTML(open(url)) 

puts page.css('title')[0].text puts page.css('h1')[0].text 
puts page.css('description') 
puts META DESCRIPTION 
puts META KEYWORDS 

ho guardato nella documentazione e didn' trovare qualcosa Dovrei usare regex per fare questo?

Grazie.

+0

dare l'html completo .. il vostro bisogno non è chiaro .. –

+0

Giusto per chiarire: Nokogiri non gattona nulla. Fa solo l'analisi. Il tuo codice, in combinazione con gemme come OpenURI e Nokogiri, fa il crawling. –

risposta

7

Ecco come mi piacerebbe andare a questo proposito:

require 'nokogiri' 

doc = Nokogiri::HTML(<<EOT) 
<meta name="description" content="I design and develop websites and applications."> 
<meta name="keywords" content="web designer,web developer"> 
EOT 

contents = %w[description keywords].map { |name| 
    doc.at("meta[name='#{name}']")['content'] 
} 
contents # => ["I design and develop websites and applications.", "web designer,web developer"] 

Oppure:

contents = doc.search("meta[name='description'], meta[name='keywords']").map { |n| 
    n['content'] 
} 
contents # => ["I design and develop websites and applications.", "web designer,web developer"] 
5

Che sarebbe:

page.at('meta[name="keywords"]')['content'] 
1

Un'altra soluzione: è possibile utilizzare XPath o CSS.