J'essaye d'obtenir le contenu de style de la source HTML en utilisant OpenUri et Nokogiri.Pourquoi OpenURI renvoie-t-il du contenu HTML différent de la source d'origine?
require 'open-uri'
require 'nokogiri'
require 'css_parser'
url = open('https://google.com')
html = Nokogiri::HTML(url)
css = CssParser::Parser.new
css.add_block!(html.search('style#gstyle').text)
Cela renvoie nil
, mais le code HTML de la page Google contient id="gstyle"
. Voici une image du résultat de sortie:
- Pourquoi la page Google HTML, dans cet exemple, différent de celui qui retourne openURI?
- Comment puis-je trouver cette étiquette
style#gstyle
? - Pourquoi Firebug voit-il le bon document HTML et pas OpenUri?
En 3, comment savez-vous que la page de Firebug est la bonne et la page d'open-uri est pas? – sawa
En négligeant une telle asymétrie vue en 3, quelle est la différence entre les questions 1 et 3? – sawa
Ne faites pas confiance aux outils basés sur le navigateur pour afficher le code HTML avec précision. Si vous voulez savoir à quoi ressemble vraiment la page, allez directement à la source en utilisant 'curl' ou' wget' ou OpenURI et regardez ce qui revient. Les navigateurs sont comme des chiots et essaient de nous faire plaisir en rendant quelque chose, même si cela veut dire changer le HTML. Tout ce qui utilise le HTML rendu par le navigateur sera erroné à ce moment-là, y compris Firebug. Et, BTW, vous pouvez utiliser 'nokogiri some_url' à la ligne de commande si vous voulez voir la vraie source aussi. –