官网: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
:)
分享到:
相关推荐
在使用 Ruby Mechanize 之前,首要任务是正确安装其依赖的 gem 包。以下是对 Ruby Mechanize 安装过程及其相关知识点的详细解释。 1. **Ruby Gem 管理系统**: Ruby 的包管理系统是 Gem,它允许开发者方便地发布、...
在这个名为“Mechanize相关资料”的压缩包中,很可能包含了关于如何使用Mechanize库的文档、教程、示例代码以及可能的库更新信息。 Mechanize库的核心功能包括: 1. **页面导航**:可以使用`get()`方法来请求URL,...
ruby mechanize包,mechanize-2.7.3.gem
在实际应用中,"multi-mechanize-master"项目可能还包括数据存储和清洗部分,如使用CSV、JSON或数据库(如SQLite)来保存抓取的数据,以及使用正则表达式或BeautifulSoup等库进行数据清洗和结构化。 总的来说,...
ruby mechanize 2.7.2 gem 包
初始化一个浏览器对象是使用Mechanize的第一步。通过`mechanize.Browser()`创建实例,并可进行一些设置,如处理HTTP_equiv、gzip压缩、重定向、referer头和robots.txt规则。此外,还可以设置HTTP调试选项和User-...
让我们深入了解一下Mechanize库的核心功能和使用方法。 首先,Mechanize库提供了一个友好的API,可以方便地打开URL、导航页面和处理HTTP请求。通过`Mechanize.new`创建一个新的实例后,你可以使用`get`方法来访问...
下面我们将详细探讨mechanize模块的使用方法。 首先,引入必要的库: ```python import mechanize import cookielib ``` 接着,创建一个Browser对象和Cookie Jar: ```python br = mechanize.Browser() cj = ...
通过使用mechanize,开发者可以编写程序自动执行一系列Web交互,比如登录网站、搜索信息、甚至执行复杂的用户操作流程。这在数据爬取、自动化测试和模拟用户行为的场景中尤为有用。 在源代码中,我们可以看到...
用python成为顶级黑客,第三方库必备,mechanize网络爬虫
Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装 代码如下: sudo gem install mechanize 抓取网页 代码如下: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get...
Python Mechanize是一个强大的库,主要用于自动化Web浏览,它在Python编程中扮演着重要角色,尤其在Web...在实际项目中,Python Mechanize常与其他库(如BeautifulSoup、requests等)结合使用,以增强其功能和灵活性。
在使用mechanize4j时,将这些依赖库添加到项目的类路径中是至关重要的,这样程序才能正确识别并调用这些库的功能。 在实际开发中,使用构建工具如Maven或Gradle管理这些依赖可以简化工作流程。只需在配置文件中指定...
机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,...开发者使用捆绑程序安装依赖项: bundle install使用以下命令运行所有测试: bundle exec rake test另请参阅Mechanize :: TestCa
The_official_source_code_for_the_python-mechanize__mechanize
使用mechanize库时,需要注意以下几点: - 它不支持JavaScript,因为它是基于HTTP协议的,无法执行客户端的JavaScript代码。对于依赖JavaScript的网页,可能需要结合其他工具,如Selenium。 - 网站的反爬虫策略:...
在使用WWW-Mechanize-Chrome时,你需要确保已安装了正确的Perl环境、WWW-Mechanize库、ChromeDriver以及匹配的Chrome浏览器版本。通常,这需要配置环境变量,使ChromeDriver能够被Perl脚本找到。 **...
Mechanize¶↑docs.seattlerb.org/mechanize github.com/sparklemotion/mechanize描述¶↑Mechanize库用于自动与网站交互。 Mechanize自动存储和发送coo Mechanize¶↑docs.seattlerb.org/mechanize github....