在现有页面(90年代早期手动开发)中,我有超过1500个类似下面的文本列表:
- Abenakis, Pancake Mix (Buckwheat), 1 kg, $4.32 Add to Cart
及其“添加到购物车”HTML:
<a href="http://ww6.paymentcompany.com/cf/add.cfm?userid=87378855
&product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg
&price=4.32
&scode=ABCD012
&return=www.mysite.com/food.html">Add to Cart</a>
以下查询字符串随每个“添加到购物车”<a>
锚点而变化:
&product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg
&price=4.32
&scode=ABCD012
我想提取URL中的所有元素并将它们保存在DB表中,然后我可以以非列表方式显示它们。
我想过使用Nokogiri,但根据我的尝试,我没有得到它。
有一种简单的方法吗?
答案 0 :(得分:5)
首先,您可以使用URI.parse
解析您的网址,以区分查询字词。然后,您可以从URI::decode_www_form
创建哈希并使用您喜欢的查询字词:
uri = URI.parse("http://ww6.paymentcompany.com/cf/add.cfm?userid=87378855&product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg&price=4.32&scode=ABCD012&return=www.mysite.com/food.html")
Hash[URI::decode_www_form(uri.query)]
# => {"userid"=>"87378855", "product"=>"Abenakis, Pancake Mix (Buckwheat), 1 kg", "price"=>"4.32", "scode"=>"ABCD012", "return"=>"www.mysite.com/food.html"}