0

Hpricotの下で、いわばすべてのHtmlをスクレイピングしていないことがわかっているという問題を解決するために、大量のチュートリアルを読みました。詳しく説明します:

私がhtmlを削り取ろうとしているウェブサイトはhttp://yellowpages.com.mt/Malta-Search/Radio-In-Malta-Gozo.aspx.

結果としてリストされているリンクを取得する必要があります(前述のサイトの可能なすべてのURLに対してこれを行う必要があるため、RSSなどは、プログラムがURLを指定してオンザフライで読み取る必要があるため、有益ではありません食べます。)

私は必要な特定のIDを引き出すためにあらゆることを試みました(直接XPATHなどを与えます)が、そうすると気づきました

doc = Hpricot(open("http://yellowpages.com.mt/Malta-Search/Radio-In-Malta-Gozo.aspx", 'User-Agent'=>'ruby')) str = doc puts str

提供された結果には、必要なリンクに関連するすべての html が含まれていません。したがって、どの方法を使用してスクレイピングしても、hpricotによると必要な要素が存在しないため、必要な要素が見つかりません。

Firefox でソースコードを表示すると、それらが表示されるので、非常に混乱しています。この問題を回避する方法を知っている人はいますか? 私は何年もの間自分の道を見つけようとしてきましたが、一人では解決策を見つけることができません! どんな助けでも大歓迎です

4

1 に答える 1

2

サイトが User-Agent で何かをしているようです。私のバージョンの Firefox が送信するものと一致するようにそのプロパティを変更すると、完全な応答本文が返されます。プロパティを「ruby」のままにすると、応答が不完全になりました。根本的な原因はわかりませんが、これで症状が緩和されたようです。

require 'rubygems'
require 'hpricot'
require 'open-uri'

doc = open("http://yellowpages.com.mt/Malta-Search/Radio-In-Malta-Gozo.aspx", 'User-Agent'=>'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2') { |f| Hpricot(f) }
puts doc.search('h6')

お役に立てれば!

于 2009-11-10T00:54:51.137 に答える