Tag: nokogiri

Nokogiri XML导入饲料组织?

我已经构建了一个依赖于我目前用Nokogiri解析的XML feed的站点。 尽管我的管理控制器中当前有所有代码,所以我可以通过URL调用导入,即/admin/import/但一切正常,花花公子。 我不禁想到这不属于控制器。 有没有更好的方法来执行此操作, import.rb代码移动到独立的import.rb文件中,以便只能从控制台访问? 如果是这样,我需要将这个文件放在/lib/目录中? 这是一段代码: class AdminController clean_field(node.xpath(“./name”).inner_text).downcase, :description => clean_field(node.xpath(“./description”).inner_text), :brand => Brand.find_or_create_by_name(clean_field_key(node.xpath(“./brand”).inner_text).downcase), :merchant => Merchant.find_or_create_by_name(clean_field_key(node.xpath(“./programName”).inner_text).downcase), :image => node.xpath(“./imageUrl”).inner_text.strip, :link => node.xpath(“./productUrl”).inner_text.strip, :category => Category.find_or_create_by_name(clean_field_key(node.xpath(“./CategoryName”).inner_text).downcase), :price => “£” + node.xpath(“./price”).inner_text.strip) print clean_field(node.xpath(“./name”).inner_text).downcase + “\n” end end end end

Nokogiri不会让我在Rails中捆绑安装

我已经看到这个问题,并尝试了我所见过的所有建议。 我有一个新的macbook,我正在寻找一个现有的应用程序。 当我克隆应用程序时,它不会捆绑安装,并且没有安装Rails的行为,即使它在其他目录中工作。 我尝试从gemfile中删除版本号并删除gemfile.lock。 我尝试了捆绑更新。 我在osx 10.9.4,rails 4.1.5和ruby 2.1.1上。 我得到的错误: An error occurred while installing nokogiri (1.6.3.1), and Bundler cannot continue. Make sure that `gem install nokogiri -v ‘1.6.3.1’` succeeds before bundling. 我安装了rvm。 我尝试重新安装自制软件,rails和ruby。 会是什么呢?

使用Nokogiri插入和删除XML节点和元素

我想提取XML文件的一部分,并记下我在该文件中提取了一些部分,比如“这里提取的东西”。 我正试图用Nokogiri这样做,但似乎没有真正记录如何: 删除 更改该完整元素的inner_text 有什么线索吗?

防止Nokogiri逃脱角色?

我创建了一个文本节点并插入到我的文档中,如下所示: #<Nokogiri::XML::Text:0x3fcce081481c "”>]> 当我尝试使用以下方法保存文档时: File.open(‘ng.html’, ‘w+’){|f| f << page.to_html} 我在实际文档中得到了这个: <%= stylesheet_link_tag ‘style’%> 有没有办法禁用转义并保存我的页面与我的erb标签完好无损? 谢谢!

DRY使用nokogiri搜索网站的每个页面

我想搜索网站的每个页面。 我的想法是找到保留在域内的页面上的所有链接,访问它们并重复。 我必须采取措施,不再重复努力。 所以它很容易开始: page = ‘http://example.com’ nf = Nokogiri::HTML(open(page)) links = nf.xpath ‘//a’ #find all links on current page main_links = links.map{|l| l[‘href’] if l[‘href’] =~ /^\//}.compact.uniq “main_links”现在是活动页面中以“/”开头的链接数组(仅应为当前域上的链接)。 从这里我可以将这些链接提供给上面类似的代码,但我不知道确保我不重复自己的最佳方法。 我想我在访问时会开始收集所有访问过的链接: main_links.each do |ml| visited_links = [] #new array of what is visted np = Nokogiri::HTML(open(page + ml)) #load the first main_link visted_links.push(ml) #push the […]

如何点击Mechanize和Nokogiri中的链接?

我正在使用Mechanize来抓取Google Wallet的订单数据。 我正在捕获第一页的所有数据,但是,我需要自动链接到后续页面以获取更多信息。 #purchaseOrderPager-pagerNextButton将移动到下一页,这样我就可以获取更多要捕获的记录。 元素看起来像这样。 我需要点击它继续前进。 但是,当我尝试以下操作时出现错误: next_page = @orders_page.search(“#purchaseOrderPager-pagerNextButton”) next_page.click 错误: undefined method `click’ for # (NoMethodError)

如何刮取延迟加载的页面

这是我用于解析网页的代码。我在rails console中做了。但是我没有在我的rails控制台中获得任何输出。我想要抓取的网站是延迟加载 require ‘nokogiri’ require ‘open-uri’ page = 1 while true url = “http://www.justdial.com/functions”+”/ajxsearch.php?national_search=0&act=pagination&city=Delhi+%2F+NCR&search=Pandits”+”&where=Delhi+Cantt&catid=1195&psearch=&prid=&page=#{page}” doc = Nokogiri::HTML(open(url)) doc = Nokogiri::HTML(doc.at_css(‘#ajax’).text) d = doc.css(“.rslwrp”) d.each do |t| puts t.css(“.jrcw”).text puts t.css(“span.jcn”).text puts t.css(“.jaid”).text puts t.css(“.estd”).text page+=1 end end

让nokogiri使用更新版本的libxml2

我一直试图让Nokogiri安装在我的电脑(Mountain Lion)上与rspec和capybara一起使用,但对于我的生活,我无法让它运行正常。 据我所知,问题在于nokogiri使用了错误版本的libxml2。 到目前为止,我尝试使用Homebrew卸载并重新安装libxml2(确保它是最新版本),使用bundle卸载并重新安装nokogiri,并指定安装nokogiri gem时Homebrew安装的libxml2文件的确切路径。 我最近的安装说明看起来像这样 sudo gem install nokogiri — –with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 –with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib –with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 其中所有这些位置都正确对应于安装工具的位置。 但是,在运行bundle exec rspec spec/requests/static_pages.rb ,我仍然得到这个输出: /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri.rb:28:in `require’: dlopen(/Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /usr/local/lib/libxml2.2.dylib (LoadError) Referenced from: /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle Reason: Incompatible library version: nokogiri.bundle requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0 – /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri.rb:28:in `’ from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require’ […]

使用Nokogiri构建空白XML标签?

我正在尝试使用Nokogiri构建XML文档。 到目前为止,一切都很标准; 我的大多数代码看起来像: builder = Nokogiri::XML::Builder.new do |xml| … xml.Tag1(object.attribute_1) xml.Tag2(object.attribute_2) xml.Tag3(object.attribute_3) xml.Tag4(nil) end builder.to_xml 但是,这会导致像而不是这样的 ,这是我的最终用户指定输出所需的标记。 如何告诉Nokogiri将全部标签放在零值附近?

使用open-uri和nokogiri在完全加载之前读取HTML

我正在使用open-uri和nokogiri和ruby做一些简单的webcraw。 有一个问题,有时html在完全加载之前被读取。 在这种情况下,我无法获取加载图标和导航栏以外的任何内容。 告诉open-uri或nokogiri等到页面完全加载的最佳方法是什么? 目前我的脚本看起来像: require ‘nokogiri’ require ‘open-uri’ url = “https://www.the-page-i-wanna-crawl.com” doc = Nokogiri::HTML(open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)) puts doc.at_css(“h2”).text