遇到了一些坑,这个mechanize不支持js代码,如果遇到了

<button id="submit" type="button" οnclick="sign(this,'signin')" class="btn btn-banner mt10">提 交</button>

这样的js代码怎么都通不过...要是有人知道怎么弄欢迎告诉我.

起因是要褥packethub上的羊毛,然后查了一下脚本,发现了mechanize这个包,主要用来模拟浏览器进行操作

脚本如下

from mechanize import Browser
from bs4 import BeautifulSoup
import redef login(br, url):page = br.open(url)br.select_form(nr=1)for f in br.forms():print fbr.form["email"] = "xxxxgmail.com"br.form["password"] = "xxxx"br.submit()def browse(br, url):page = br.open(url)soup = BeautifulSoup(page.read(), "html5lib")title_div = soup.find("div", class_="dotd-title")title = title_div.get_text()account_div = soup.find("div" ,id="account-bar-logged-in")print account_divreturn titledef click(br):for link in br.links():print link.url, link.textreq = br.click_link(url_regex=re.compile("freelearning-claim"))print "req: ",reqfor control in br.form.controls:print controlprint "type=%s, name=%s value=%s" % (control.type, control.name, br[control.name])br.open(req)print br.title(), br.geturl()br = Browser()
br.set_handle_redirect(True)
success=Truetry:login(br, "http://www.packtpub.com")print "LOGIN"book_title = browse(br, "http://www.packtpub.com/packt/offers/free-learning")print book_titleclick(br)
except Exception, e:success=Falseerror_message = str(e)if(success): outcome = "Success: Grabbed the book " + book_title.strip() + " for free!"

然后自己写了些玩一玩的(还打算用这个抢票的...

主要是对一些表单的操作,但是现在不用js的页面应该很少了...

#!/usr/bin/env python
# -*- coding: UTF-8 -*-import sys,mechanize
import re
reload(sys)
sys.setdefaultencoding('utf-8')#Browser
br = mechanize.Browser()#options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)#Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)'''
#debugging?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)
'''
#User-Agent 模拟浏览器行为
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')]
#打开页面
r = br.open(sys.argv[1])
# print br.geturl()
#选择表单
# br.select_form(class_="s_form")
#查看所有表单
for  f in br.forms():print f
br.select_form(nr=0)'''
print "html:\n", html
print "Response:\n", br.response().read()
print "Title:\n",br.title()
print "Info:\n",r.info()
'''
#选取link
for link in br.links():if link.text=="机因":print link.url + ": " + link.text , link.attrs, link.tag
#查看所有的control
for control in br.form.controls:print controlprint "type=%s, name=%s value=%s" % (control.type, control.name, br[control.name])
#跳转
new_link = br.click_link(text='机因')br.open(new_link)
print br.title()

python mechanize使用相关推荐

  1. python mechanize自动登录程序

    放假回来了,很久没更新博客了,以后得常更新,今天给大家分享下python第3方的模块包:mechanize. mechanize是非常合适的模拟浏览器的模块,它的特点主要有: 1 http,https ...

  2. Python mechanize 的一点说明

    mechanize是非常合适的模拟浏览器的模块,它的特点主要有: 1 http,https协议等. 2 简单的HTML表单填写. 3 浏览器历史记录和重载. 4 Referer的HTTP头的正确添加( ...

  3. Python mechanize模块

    之前做题时遇到一道题可以用mechanize模块轻松的解决,于是找了这篇微博学习了一下么mechanize的一些简单用法: mechanize是非常合适的模拟浏览器的模块,它的特点主要有: 1 htt ...

  4. Python教程WEB安全篇

    lxj616 · 2014/07/21 11:20 0x00 概述 本文从实例代码出发,讲解了Python在WEB安全分析中的作用,以最基础的示例向读者展示了Python如何解析.获取.以及处理各种类 ...

  5. python 内置浏览器robobrowser_【自动化测试】无需图形界面环境下的浏览器开源项目...

    Awesomium 基于Chromium无图形界面浏览器引擎. C++, .NET benv Benv是node.js开发的无界面浏览器测试环境,用于测试客户端代码. JavaScript brows ...

  6. 使用Mechanize实现自动化表单处理

    mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面 mechanize的特点: 1 http,https协议等 2 简单的HTML表单填写 ...

  7. 32_mechanize使用实例

    title: mechanize 使用实例 urlname: 32_mechanize使用实例 date: 2018-02-01 03:03:03 tags: [mechanize,python] c ...

  8. ReactNative 在丁香医生项目中引入的踩坑日记

    ReactNative 在丁香医生项目中引入的踩坑日记 this没绑定到函数导致空指针 参考 React-Native 踩坑第二弹-undefined is not a function(evalua ...

  9. python模块学习---mechanize(模拟浏览器)

    mechanize是非常合适的模拟浏览器的模块. 它的特点主要有: 1 http,https协议等. 2 简单的HTML表单填写. 3 浏览器历史记录和重载. 4 Referer的HTTP头的正确添加 ...

最新文章

  1. 「苹果牌」电动车要来了:最早明年见,还带着突破性电池技术
  2. 《Akka应用模式:分布式应用程序设计实践指南》读书笔记1
  3. Flutter快速入门 五步搞定Flutter环境配置
  4. 为什么 scanf( )(scanf_s)函数老要输入两次才行?
  5. 1分钱,工程师可以做什么?
  6. java public object_Java_Object
  7. UIView常见方法总结
  8. 目前微型计算机的内存储量一般是多大的,微型计算机内存容量的大小一般是指什么而言...
  9. HRESULT是什么,应该如何理解
  10. linux设备驱动归纳总结(八):1.总线、设备和驱动【转】
  11. Java中json格式的字符串数组,list,json,map相互转换
  12. 万能电商Banner素材模板,一切产品为王
  13. matlab图像处理低通滤波器,基于matlab数字图像处理之低通滤波器
  14. [ 物联网篇 ] ESP32 AWS IoT and Amazon Alexa Development / FreeRTOS平台的Alexa语音助手
  15. 计算机编程入门先学什么最好?
  16. c++11总结21——atomic_flag
  17. 【无线篇】(6.0) ❀ 10. FortiCloud 管理 AP (上) ❀ FortiAP 无线AP
  18. SQL 2008函数大全
  19. F280049C Crossbar X-BAR
  20. Bilinear CNN Faster代码解读

热门文章

  1. 基于芯科Host-NCP解决方案的Zigbee 3.0 Gateway技术研究(二)-使用gateway-management-ui
  2. LINUX命令后面常见的/dev/null 解释
  3. 什么影响了数据库查询速度
  4. ​​​​​​​Snmp学习总结(五)——SNMP4J介绍
  5. 手把手教你安装JDK8~
  6. 老牌Git客户端SmartGit 安装 和 使用 教程
  7. RK3568平台开发系列讲解(电源篇)Early Suspend驱动
  8. 惠普Z240 工作站 安装 Debian
  9. Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传
  10. python ipython模块_IPython模块