作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以将自定义 HTML 代码添加到 Mechanize 页面对象中。目标是避免使用 javascript 代码创建表单,方法是将 javascript 代码生成的 HTML 添加到 mechanize 页面对象(通过 agent.get(uri) 方法获取)并让 mechanize 代理单击提交表单,就像它一样真的在那里。它应该是可能的,因为表单是直接在页面上创建的,除了 jpeg 之外,不需要任何外部调用。我不能使用 Selenium 和类似的东西,我需要坚持使用 Mechanize 和 Nokogiri。任何帮助甚至指导将不胜感激!
最佳答案
查看 Mechanize 文档中的“Scraping Data ”。因为您可以访问和搜索 Nokogiri 文档,所以您可以对其进行修改。
使用 Mechanize 内部使用的 Nokogiri 可以轻松修改文档:
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://www.example.org')
doc = page.parser
first_p = doc.at('p')
first_p.to_html # => "<p>This domain is established to be used for illustrative examples in documents. You may use this\n domain in examples without prior coordination or asking for permission.</p>"
first_p.children = '
<form action="action_page.php">
First name:<br>
<input type="text" name="firstname" value="First name"><br>
Last name:<br>
<input type="text" name="lastname" value="Last name"><br><br>
<input type="submit" value="Submit">
</form>'
first_p.to_html # => "<p>\n <form action=\"action_page.php\">\n First name:<br>\n <input type=\"text\" name=\"firstname\" value=\"First name\"><br>\n Last name:<br>\n <input type=\"text\" name=\"lastname\" value=\"Last name\"><br><br>\n <input type=\"submit\" value=\"Submit\">\n </form></p>"
向上查找一级,到父级:
page.parser.at('p').parent.to_html # => "<div>\n <h1>Example Domain</h1>\n <p>\n <form action=\"action_page.php\">\n First name:<br>\n <input type=\"text\" name=\"firstname\" value=\"First name\"><br>\n Last name:<br>\n <input type=\"text\" name=\"lastname\" value=\"Last name\"><br><br>\n <input type=\"submit\" value=\"Submit\">\n </form></p>\n <p><a href=\"http://www.iana.org/domains/example\">More information...</a></p>\n</div>"
是否可以将 Mechanize 与修改后的 HTML 一起使用需要您自己弄清楚。
关于javascript - 如何将自定义 HTML 添加到 Mechanize 页面对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35154822/
我是一名优秀的程序员,十分优秀!