Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-WebCrawler如何访问找到的链接?_Ruby_Url_Hyperlink_Web Crawler_Net Http - Fatal编程技术网

Ruby-WebCrawler如何访问找到的链接?

Ruby-WebCrawler如何访问找到的链接?,ruby,url,hyperlink,web-crawler,net-http,Ruby,Url,Hyperlink,Web Crawler,Net Http,我尝试制作一个WebCrawler,它可以从主页中找到链接,并一次又一次地访问找到的链接。。 现在我已经用解析器编写了一个代码W9,它向我显示找到的链接,并在那里打印这个主页的一些标记的统计信息,但我不知道如何在循环中访问新链接并在那里打印统计信息 * * 首先,您需要一个接受链接并返回正文输出的函数。然后解析正文外的所有链接,并保留链接列表。如果您尚未访问该链接,请查看该列表。从新链接列表中删除那些访问过的链接,然后再次调用相同的函数并重新执行 要在某个点停止爬虫程序,需要在while循环中构

我尝试制作一个WebCrawler,它可以从主页中找到链接,并一次又一次地访问找到的链接。。 现在我已经用解析器编写了一个代码W9,它向我显示找到的链接,并在那里打印这个主页的一些标记的统计信息,但我不知道如何在循环中访问新链接并在那里打印统计信息

*

*


首先,您需要一个接受链接并返回正文输出的函数。然后解析正文外的所有链接,并保留链接列表。如果您尚未访问该链接,请查看该列表。从新链接列表中删除那些访问过的链接,然后再次调用相同的函数并重新执行

要在某个点停止爬虫程序,需要在while循环中构建一个条件

根据您的代码:

@visited_links = []
@new_links = []

def get_body(link)
  @visited_links << link
  @src = Net::HTTP.start(@url.host, @url.port) { |http|  http.get(@url.path) }
  @src.body
end

def get_links(body)
  # parse the links from your body
  # check if the content does not have the same link
end

start_link_body = get_body("http://www.test.com")

get_links(start_link_body)

while @visited_links < 500 do
  body = get_body(@new_links.shift)
  get_links(body)
end
@已访问的链接=[]
@新链接=[]
def get_车身(链接)
@已访问的链接
def govisit
        if @content =~ @commentTag
        end

        cnt = @content.scan(@aTag) 
        cnt.each do |link| 
            @visit[link] = []
        end

        puts "Links on this site: "
        @visit.each do |links|
            puts links
        end

        if @visit.size >= 500
            exit 0
        end

        printStatistics
    end
@visited_links = []
@new_links = []

def get_body(link)
  @visited_links << link
  @src = Net::HTTP.start(@url.host, @url.port) { |http|  http.get(@url.path) }
  @src.body
end

def get_links(body)
  # parse the links from your body
  # check if the content does not have the same link
end

start_link_body = get_body("http://www.test.com")

get_links(start_link_body)

while @visited_links < 500 do
  body = get_body(@new_links.shift)
  get_links(body)
end