`
holin
  • 浏览: 17683 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用Mechanize发布百度空间博客

阅读更多

官网:http://mechanize.rubyforge.org

 

登录

require 'rubygems'
require 'mechanize'
require 'logger'
# Mechanize.log = Logger.new(STDOUT)
agent = Mechanize.new
# pp agent.methods.sort.grep(/agent/)
agent.user_agent_alias = 'Mac Safari'
# pp agent.user_agent
page = agent.get('https://passport.baidu.com/?login')

 

跑出异常:

/Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/chain/body_decoding_handler.rb:39:in `handle': Unsupported content encoding (RuntimeError)
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/chain.rb:29:in `pass'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/chain/handler.rb:6:in `handle'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/chain/response_reader.rb:35:in `handle'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/chain.rb:24:in `handle'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize.rb:543:in `fetch_page'
    from /Users/holin/.rvm/rubies/ruby-1.8.7-p299/lib/ruby/1.8/net/http.rb:1054:in `request'
    from /Users/holin/.rvm/rubies/ruby-1.8.7-p299/lib/ruby/1.8/net/http.rb:2144:in `reading_body'
    from /Users/holin/.rvm/rubies/ruby-1.8.7-p299/lib/ruby/1.8/net/http.rb:1053:in `request'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize.rb:538:in `fetch_page'
    from /Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize.rb:259:in `get'
    from hi_baidu.rb:13

 

主要是百度返回的response['Content-Encoding']是none,于是修改mechanize/chain/body_decoding_handler.rb,34行:

when 'x-gzip', 'none'

 通过!!

继续:

equire 'rubygems'
require 'mechanize'
require 'logger'
# Mechanize.log = Logger.new(STDOUT)
agent = Mechanize.new
# pp agent.methods.sort.grep(/agent/)
agent.user_agent_alias = 'Mac Safari'
# pp agent.user_agent
page = agent.get('https://passport.baidu.com/?login')
# pp page
login_form = page.forms.first
# pp login_form
login_form.username = "我爱游记"
login_form.password = "mypassword"
page = agent.submit(login_form)
page = agent.get("http://hi.baidu.com/%E6%88%91%E7%88%B1%E6%B8%B8%E8%AE%B0/creat/blog/")
form = page.form("form1")
pp form.methods.sort
form.spBlogTitle = "我最爱游记了,呵呵"
form.spBlogText = "我会发很多游记的,呵呵"
page = agent.submit(form)
 

运行后抛异常:

/Users/holin/.rvm/gems/ruby-1.8.7-p299@rails2/gems/mechanize-1.0.0/lib/mechanize/form.rb:136:in `method_missing': undefined method `spBlogText=' for #<Mechanize::Form:0x10188b7b8> (NoMethodError)
    from hi_baidu.rb:31
 

spBlogText 文本框是js生成的,怎么办?

想办法生成这个文本框!

......
form.add_field!("spBlogText") #自己增加Field
form.spBlogTitle = "我最爱游记了,呵呵"
form.spBlogText = "我会发很多游记的,呵呵"
....
 成功了,哈哈。

 

可以访问地址:http://hi.baidu.com/%CE%D2%B0%AE%D3%CE%BC%C7/blog/item/de9e0b4aa2facf07b2de051a.html

 

首发:http://www.holin.info/posts/4c7b6a2aff1f015018000001

 

:)

 

0
0
分享到:
评论

相关推荐

    ruby mechanize安装需要的gem包

    在使用 Ruby Mechanize 之前,首要任务是正确安装其依赖的 gem 包。以下是对 Ruby Mechanize 安装过程及其相关知识点的详细解释。 1. **Ruby Gem 管理系统**: Ruby 的包管理系统是 Gem,它允许开发者方便地发布、...

    Mechanize相关资料

    在这个名为“Mechanize相关资料”的压缩包中,很可能包含了关于如何使用Mechanize库的文档、教程、示例代码以及可能的库更新信息。 Mechanize库的核心功能包括: 1. **页面导航**:可以使用`get()`方法来请求URL,...

    mechanize-2.7.3.gem

    ruby mechanize包,mechanize-2.7.3.gem

    multi-mechanize-master

    在实际应用中,"multi-mechanize-master"项目可能还包括数据存储和清洗部分,如使用CSV、JSON或数据库(如SQLite)来保存抓取的数据,以及使用正则表达式或BeautifulSoup等库进行数据清洗和结构化。 总的来说,...

    ruby mechanize 2.7.2 gem 包

    ruby mechanize 2.7.2 gem 包

    Python使用Mechanize模块编写爬虫的要点解析

    初始化一个浏览器对象是使用Mechanize的第一步。通过`mechanize.Browser()`创建实例,并可进行一些设置,如处理HTTP_equiv、gzip压缩、重定向、referer头和robots.txt规则。此外,还可以设置HTTP调试选项和User-...

    Ruby-Mechanize一个让自动化web交互变得容易的ruby库

    让我们深入了解一下Mechanize库的核心功能和使用方法。 首先,Mechanize库提供了一个友好的API,可以方便地打开URL、导航页面和处理HTTP请求。通过`Mechanize.new`创建一个新的实例后,你可以使用`get`方法来访问...

    mechanize-源码.rar

    通过使用mechanize,开发者可以编写程序自动执行一系列Web交互,比如登录网站、搜索信息、甚至执行复杂的用户操作流程。这在数据爬取、自动化测试和模拟用户行为的场景中尤为有用。 在源代码中,我们可以看到...

    python第三方库-mechanize

    用python成为顶级黑客,第三方库必备,mechanize网络爬虫

    在Python中使用mechanize模块模拟浏览器功能

    下面我们将详细探讨mechanize模块的使用方法。 首先,引入必要的库: ```python import mechanize import cookielib ``` 接着,创建一个Browser对象和Cookie Jar: ```python br = mechanize.Browser() cj = ...

    Ruby中的Mechanize的使用教程

    Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装 代码如下: sudo gem install mechanize 抓取网页 代码如下: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get...

    python mechanize 0.2.5

    Python Mechanize是一个强大的库,主要用于自动化Web浏览,它在Python编程中扮演着重要角色,尤其在Web...在实际项目中,Python Mechanize常与其他库(如BeautifulSoup、requests等)结合使用,以增强其功能和灵活性。

    mechanize4j源程序及所有依赖的jar

    在使用mechanize4j时,将这些依赖库添加到项目的类路径中是至关重要的,这样程序才能正确识别并调用这些库的功能。 在实际开发中,使用构建工具如Maven或Gradle管理这些依赖可以简化工作流程。只需在配置文件中指定...

    mechanize:Mechanize是一个ruby库,可以轻松实现自动的Web交互

    机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,...开发者使用捆绑程序安装依赖项: bundle install使用以下命令运行所有测试: bundle exec rake test另请参阅Mechanize :: TestCa

    The_official_source_code_for_the_python-mechanize__mechanize.zip

    The_official_source_code_for_the_python-mechanize__mechanize

    Python库 | mechanize-0.3.2-py2-none-any.whl

    使用mechanize库时,需要注意以下几点: - 它不支持JavaScript,因为它是基于HTTP协议的,无法执行客户端的JavaScript代码。对于依赖JavaScript的网页,可能需要结合其他工具,如Selenium。 - 网站的反爬虫策略:...

    mechanize-js:Mechanize是一个Javascript库,可实现自动Web交互

    Mechanize自动存储和发送Cookie,跟随重定向,跟随链接并提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。入门在根文件夹中,您可以运行get_page示例: node examples...

    WWW-Mechanize-Chrome:自动化Chrome浏览器

    在使用WWW-Mechanize-Chrome时,你需要确保已安装了正确的Perl环境、WWW-Mechanize库、ChromeDriver以及匹配的Chrome浏览器版本。通常,这需要配置环境变量,使ChromeDriver能够被Perl脚本找到。 **...

Global site tag (gtag.js) - Google Analytics