使用Mechanize实现自动化表单处理
mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面
mechanize的特点:
1 http,https协议等
2 简单的HTML表单填写
3 浏览器历史记录和重载
4 Referer的HTTP头的正确添加
5 自动遵守robots.txt的
6 自动处理HTTP-EQUIV和刷新
常用函数
.CookieJar():设置cookie
.Browser():打开浏览器
.addheaders():User-Agent,用来欺骗服务器的
.open():打开网页,按照官网描述可以打开任意网页,不仅限于http
.select_form():选择表单的,选择表单的ID的时候需要注意。
.form[]:填写信息
.submit():提交
1.安装:
pip install mechanize
注:
只能在python 2.x 上
2.简单使用
import mechanize br = mechanize.Browser() br.open("http://www.cnblogs.com/baby123/p/8078508.html") print br.title()
import mechanize request2 = mechanize.Request("https://news.cnblogs.com/") response2 = mechanize.urlopen(request2) print response2.geturl() print response2.info()
注:
response2.info() # headers
response2.read() # body
3.使用百度查询
# coding=UTF-8 import mechanize br = mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.set_debug_http(True) br.set_debug_redirects(True) br.set_debug_responses(True) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] br.open("https://www.baidu.com/") br.select_form(nr = 0) br.form['wd'] = 'python mechanize' br.submit() brr=br.response().read() print brr
4.登陆
# coding=UTF-8 import mechanize br = mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.set_debug_http(True) br.set_debug_redirects(True) br.set_debug_responses(True) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] br.open("https://passport.csdn.net/account/login?service=http://www.csdn.net") br.select_form(nr = 0) br.form['username'] = 'XXXXXXX' br.form['password'] = '123456' br.submit() brr=br.response().read() with open("logininfo.txt","w") as f: f.write(brr)
将登陆后的html页面写入文件 logininfo.txt, 从文件内容看,登录成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2015-12-22 情人节玫瑰花