【问题标题】:Web scraping Mechanize in Ruby producing different html to browserRuby 中的 Web 抓取 Mechanize 为浏览器生成不同的 html
【发布时间】:2013-12-04 21:19:36
【问题描述】:

我对 Ruby 和 Mechanize 比较陌生,但我在使用 ASP 网站时遇到了一些困难

URL: http://www.adecco.co.uk/careercentre/job-search-results.aspx?kws=&pstc=&cty=&prvnm=&pdx=1


agent = Mechanize.new
page = agent.get('http://www.adecco.co.uk/careercentre/job-search-results.aspx?kws=&pstc=&cty=&prvnm=&pdx=1')
puts page.body

我正在研究 Mechanize 网站上的示例,问题是我通过 Mechanize 返回的 HTML 与我在浏览器中使用视图源获得的 HTML 非常不同,我需要完成的 HTML?

更新

我不太确定在这里做什么,因为问题实际上在于页面之后使用 jquery 呈现内容,所以我最终使用 Selenium 来获取具有正确 html 的页面,这些都不是答案实际上是错误的,所以我都赞成,但都没有真正解决问题?

谢谢

马克

【问题讨论】:

    标签: ruby-on-rails ruby web-scraping mechanize


    【解决方案1】:

    试试下面的代码,

    require 'mechanize'
    require 'nokogiri'
    
    agent = Mechanize.new
    page = agent.get('http://www.adecco.co.uk/careercentre/job-search-results.aspx?kws=&pstc=&cty=&prvnm=&pdx=1')
    
    document = Nokogiri::HTML(page.content)
    puts document
    

    【讨论】:

    • 您不需要单独包含 nokogiri 或对 Nokogiri::HTML 做任何事情。机械化为您做到这一点。
    【解决方案2】:

    我认为这是因为网站对不同用户代理的处理方式不同,您可以将用户代理设置为与您的浏览器相同,如下所示

    a = Mechanize.new
    a.user_agent_alias = 'Mac Safari'
    

    你可以任意取值

    AGENT_ALIASES = {
      'Windows IE 6' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
      'Windows IE 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
      'Windows Mozilla' => 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6',
      'Mac Safari' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10',
      'Mac FireFox' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6',
      'Mac Mozilla' => 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4a) Gecko/20030401',
      'Linux Mozilla' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624',
      'Linux Firefox' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1',
      'Linux Konqueror' => 'Mozilla/5.0 (compatible; Konqueror/3; Linux)',
      'iPhone' => 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3',
      'Mechanize' => "WWW-Mechanize/#{VERSION} (http://rubyforge.org/projects/mechanize/)"
    }
    

    以上列表存在于此处 https://github.com/sparklemotion/mechanize/blob/master/lib/mechanize.rb#L115

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多