Поиск по Ruby в http получить тело ответа на запрос

Я столкнулся с этой проблемой на php 7.1, который поставляется с High Sierra (OS X 10.13.5), редактирование /etc/apache2/httpd.conf со следующими изменениями помогло:

  1. Раскомментировать эту строку
    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. Вставить пасту в конце
    <IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    
1
задан Shalafister's 24 March 2019 в 20:19
поделиться

2 ответа

В Ruby у нас есть Nokogiri, который позволяет вам искать документы с помощью селекторов XPath или CSS3:

doc = Nokogiri::HTML(open("https://www.test.com"))
doc.at_css('div#price').text

или:

doc = Nokogiri::HTML response.body
doc.at_css('div#price').text

https://github.com / sparklemotion / nokogiri

0
ответ дан Sajad Rastegar 24 March 2019 в 20:19
поделиться

Вы, вероятно, хотите использовать драгоценный камень https://github.com/sparklemotion/nokogiri .

Nokogiri (鋸) - это Rubygem, предоставляющий парсеры HTML, XML, SAX и Reader с поддержкой XPath и CSS-селекторов.

require 'nokogiri'

html = <<HTML
<div id="block1">
    <a href="http://google.com">link1</a>
</div>
<div id="block2">
    <a href="http://stackoverflow.com">link2</a>
    <a id="tips">just a bookmark</a>
</div>
HTML

doc = Nokogiri::HTML(html)
doc.css('#block1 a[href]').text
#=>link1

Чтобы изменить ваш пример:

require 'net/http'
require 'uri'
require 'nokogiri'
uri = URI.parse("https://www.example.com")
request = Net::HTTP::Get.new(uri)
request.content_type = "application/json"
request["Accept"] = "application/json"

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

response.body

doc = Nokogiri::HTML.parse(response.body)

doc.css('p').text;
#=> "This domain is established to be used for illustrative examples in documents. You may use this\n    domain in examples without prior coordination or asking for permission.More information..."
0
ответ дан lacostenycoder 24 March 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: