2

私の友人は、情報を含む投稿でいっぱいのフォーラムを持っています。時々、彼女は自分のフォーラムの投稿を確認して、結論を出したいことがあります。現在、彼女はフォーラムをクリックして投稿を確認し、結論を出すためのデータ(脳内)の必ずしも正確な画像を生成していません。今日の私の考えは、データが何を言っているのかを彼女に実際に理解させるために必要なHTMLを解析する簡単なRubyスクリプトをたぶん打ち出すことができるだろうということでした。

今日初めてRubyのnet/httpライブラリを使用していますが、問題が発生しました。私のブラウザは私の友人のフォーラムを表示するのに問題はありませんが、メソッドNet :: HTTP.new( "forumname.net")は次のエラーを生成するようです:

ターゲットマシンが積極的に拒否したため、接続できませんでした。--connect(2)

そのエラーをグーグルで調べてみると、セキュリティ上の理由から、MySQL(またはそのようなもの)が私のようなおせっかいな人をリモートで突っ込んで欲しくないことに関係していることがわかりました。これは私には理にかなっていますが、不思議に思います。私のブラウザが友人のフォーラムをいじくり回しているのに、私の小さなRubyスクリプトには突っついた権利がないのです。スクリプトがサーバーに脅威ではないことを通知する方法はありますか?書く権利ではなく、読む権利だけが欲しいということですか?

みんなありがとう、

z。

4

2 に答える 2

6

Webサイトをスクレイピングしますか?mechanizeを使用します:

#!/usr/bin/ruby1.8

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
page = agent.get("http://xkcd.com")
page = page.link_with(:text=>'Forums').click
page = page.link_with(:text=>'Mathematics').click
page = page.link_with(:text=>'Math Books').click
#puts page.parser.to_html    # If you want to see the html you just got
posts = page.parser.xpath("//div[@class='postbody']")
for post in posts
  title = post.at_xpath('h3//text()').to_s
  author = post.at_xpath("p[@class='author']//a//text()").to_s
  body = post.xpath("div[@class='content']//text()").collect do |div|
    div.to_s
  end.join("\n")
  puts '-' * 40
  puts "title: #{title}"
  puts "author: #{author}"
  puts "body:", body
end

出力の最初の部分:

----------------------------------------
title: Math Books
author: Cleverbeans
body:
This is now the official thread for questions about math books at any level, fr\
om high school through advanced college courses.
I'm looking for a good vector calculus text to brush up on what I've forgotten.\
 We used Stewart's Multivariable Calculus as a baseline but I was unable to pur\
chase the text for financial reasons at the time. I figured some things may hav\
e changed in the last 12 years, so if anyone can suggest some good texts on thi\
s subject I'd appreciate it.
----------------------------------------
title: Re: Multivariable Calculus Text?
author: ThomasS
body:
The textbooks go up in price and new pretty pictures appear. However, Calculus \
really hasn't changed all that much.
If you don't mind a certain lack of pretty pictures, you might try something li\
ke Widder's Advanced Calculus from Dover. it is much easier to carry around tha\
n Stewart. It is also written in a style that a mathematician might consider no\
rmal. If you think that you might want to move on to real math at some point, i\
t might serve as an introduction to the associated style of writing.
于 2010-01-13T23:03:39.110 に答える
1

一部のサイトは「www」サブドメインでしかアクセスできないため、問題が発生している可能性があります。

getリクエストを作成するには、Getメソッドを使用します。

require 'net/http'

url = URI.parse('http://www.forum.site/')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
  http.request(req)
}
puts res.body

uは、オプションとして、ある時点でユーザーエージェントを設定する必要がある場合もあります。

{'User-Agent' => 'Mozilla/5.0 (Windows; U;
    Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1'})
于 2010-01-13T21:09:47.173 に答える