mechanize (python) 单击 javascript 类型链接

2023-12-13

是否可以让 mechanize 跟随 javascript 类型的锚链接?

我正在尝试使用 mechanize 和 beautifulsoup 登录 python 网站。

这是锚链接

<a id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_LoginButton" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;StaticModuleID15$ctl00$SkinLogin1$Login1$Login1$LoginButton&quot;, &quot;&quot;, true, &quot;Login1&quot;, &quot;&quot;, false, true))"><img id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_Image2" border="0" src="../../App_Themes/default/images/Member/btn_loginenter.gif" align="absmiddle" style="border-width:0px;" /></a>

这是我尝试过的

    links = SoupStrainer('a', id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_LoginButton")
    [anchor for anchor in BeautifulSoup(data, parseOnlyThese=links)]
    link = mechanize.Link( base_url = self.url,
                    url = str(anchor['href']),
                    text = str(anchor.string),
                    tag = str(anchor.name),
                    attrs = [(str(name), str(value))
                             for name, value in anchor.attrs])
    response2 = br.follow_link(link)

现在我收到错误消息,

urllib2.URL错误:

任何帮助或建议表示赞赏

Edit

帮手评论完后,我又去看了一下asp页面的代码。

我发现了一些有用的脚本,但我不确定我必须在 python 中做什么才能用 python 模拟 JS 代码。 我在任何地方都没有看到任何饼干设置,我是否看错了地方?

<form name="form1" method="post" action="BrowseSchedule.aspx?ItemId=75" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">

//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>
function WebForm_DoPostBackWithOptions(options) {
    var validationResult = true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) == 'function') {
            validationResult = Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
            theForm.action = options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus = theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
                if (typeof(document.activeElement) == "undefined") {
                    lastFocus.value = options.eventTarget;
                }
                else {
                    var active = document.activeElement;
                    if ((typeof(active) != "undefined") && (active != null)) {
                        if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
                            lastFocus.value = active.id;
                        }
                        else if (typeof(active.name) != "undefined") {
                            lastFocus.value = active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(options.eventTarget, options.eventArgument);
    }
}

我认为机械化模块不可能做到这一点:它没有与 JavaScript 交互的能力:它纯粹基于 Python 和 HTTP。

也就是说,您可能感兴趣蟒蛇蜘蛛猴模块,它似乎旨在让你做这种事情。根据其网站,其目的是让您

“从 Python 执行任意 JavaScript 代码。允许您在 JavaScript VM 中引用任意 Python 对象和函数”

我还没有使用过它,但它看起来确实可以满足您的需求,尽管它仍处于 alpha 阶段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mechanize (python) 单击 javascript 类型链接 的相关文章

  • jQuery Blur() 在 Chrome 上不起作用

    我在 MacOSX 上运行这个http jsfiddle net q84wv http jsfiddle net q84wv on Chrome最新版本 它不会工作 在 Firefox 上运行时它工作得很好 有什么线索吗 假设您想要aler
  • str.translate 给出 TypeError - Translate 采用一个参数(给定 2 个参数),在 Python 2 中工作

    我有以下代码 import nltk os json csv string cPickle from scipy stats import scoreatpercentile lmtzr nltk stem wordnet WordNetL
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • 在 vue.js 模板中包含外部脚本

    我是 Vue js 和 web pack 的新手 所以我决定使用 vue cli webpack 来构建初始应用程序 我试图包含一个外部脚本 例如组件 不需要的模板中 但是 Vue 警告这是不允许的 我的 index html 文件与最初生
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • Chrome Javascript 调试器暂停时不会重新加载页面

    有时 当我在 Chrome 中调试某些 javascript 并且暂停了 javascript 时 如果我尝试重新加载页面 chrome 只会 继续 调试器 单步执行到下一个断点 似乎没有任何方法可以强制 javascript 完全停止运行
  • 参数验证,Python 中的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 让我们举一个 API 的例子 def get abs directory self path if os path isdir path ret
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • Javascript 选择 onchange='this.form.submit()'

    我有一个带有选择和一些文本输入的表单 我希望在更改选择时提交表单 使用以下方法可以正常工作 onchange this form submit 但是 如果表单还包含提交按钮 则当选择更改时 表单不会提交 我猜有某种冲突 我在这里有什么选择
  • Django 接受 AM/PM 作为表单输入

    我试图弄清楚如何使用 DateTime 字段在 Django 中接受 am pm 作为时间格式 但我遇到了一些麻烦 我尝试在 forms py 文件中这样设置 pickup date time from DateTimeField inpu
  • 大型数据集上的 Sklearn-GMM

    我有一个很大的数据集 我无法将整个数据放入内存中 我想在这个数据集上拟合 GMM 我可以用吗GMM fit sklearn mixture GMM 重复小批量数据 没有理由重复贴合 只需随机采样您认为机器可以在合理时间内计算的尽可能多的数据
  • 理论上防止 WebSocket 中第一个收到的消息丢失

    服务器端代码发送消息立即地连接打开后 它向客户端发送初始配置 问候语 以下代码是在客户端 var sock new WebSocket url sock addEventListener error processError sock ad
  • Meteor.js 登录事件

    因此 我对 Meteor 框架和 JavaScript 总体来说还很陌生 但我正在使用该框架开发一个小项目 以尝试让自己达到标准 基本上我正在开发一个微博客网站 目前 用户可以通过多种服务登录 fb google 等 我通过插入所需 url
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 在 Google Apps 脚本中的文本前插入换行符

    我需要在 Google 文档中的某些文本之前插入一些换行符 尝试过这种方法但出现错误 var body DocumentApp getActiveDocument getBody var pattern WORD 1 var found b
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch
  • 获取淘汰赛中被点击元素的索引

    获取无序列表中单击元素的索引的最佳方法是什么 让我举个例子 假设我有以下 HTML 代码 ul li p p li ul 现在我有以下 javascript 代码来获取索引 self itemClicked function data it
  • 在Python 3.2中,我可以使用http.client打开并读取HTTPS网页,但urllib.request无法打开同一页面

    我想打开并阅读https yande re https yande re with urllib request 但我收到 SSL 错误 我可以使用以下方式打开并阅读页面http client用这个代码 import http client

随机推荐

  • 在android中的EditText上输入时如何过滤ListView数据

    我有一个ListView and a EditText 如何在输入内容时过滤 ListView 数据EditText Add TextWatcher to EditText addTextChangedListener In onTextC
  • 将收件箱和已发送短信与所有短信区分开来

    我正在开发一个 Android 应用程序 在我的应用程序中 我必须列出所有对话 并且我完成了该部分 每个对话都包含发送到该号码的所有短信 所以我必须将收件箱和已发送短信与所有短信区分开来 我知道以下 api 可用于查找收件箱和已发送短信 c
  • 通过悬停另一个元素使一个元素可见(不带 :hover-property)

    好吧 问题是这样的 我有这三个 DIV div div div div div div 这三个 DIV 不可见 display none 位于页面上完全不同的位置 div div div div div div 我想做的是 如果我将鼠标悬停
  • 如何获得类型依赖于隐式参数的方法参数?

    trait JsonOps J type ObjectFields def partitionObjectFields fields ObjectFields fieldNames List String ObjectFields Obje
  • 计算年百分比(需要继承代码的一些帮助)

    我正在制作一个应用程序 为客户提供大致的贷款报价 稍后由其他后台系统计算 我从我们为其制作计算器的金融公司收到了一些代码 我的问题是我不理解计算年百分比率 包括启动费和月费 的代码部分 他们可能正在使用这种方法 但我不能真正告诉 http
  • 如何在 Telegram 中从 Bot 发送自定义表情符号

    我正在尝试使用 Telegram API 发送 custom emoji消息实体 object 我尝试这样做的方法如下 const message ctx sendMessage text message entities type cus
  • “关闭”流?

    我正在从 java 读取文本BufferedReader像这样 Stream continually reader readLine takeWhile case null gt reader close false case gt tru
  • 修剪 NSString 末尾的空格

    我需要删除字符串末尾的空格 我怎样才能做到这一点 示例 如果字符串是 Hello 它必须成为 Hello 摘自这里的答案 https stackoverflow com a 5691567 251012 NSString stringByT
  • 如何使用两列上的 WHERE 子句加速 MySQL 查询?

    我试图通过两列上的 WHERE 子句来加速对大型表的查询 据我所知 MySQL 仅使用 ALERT ID 列 有没有办法使用两个索引重写此查询 SHOW INDEX 和 EXPLAIN 输出如下 show index from alert
  • nvarchar 连接/索引/nvarchar(max) 莫名其妙的行为

    今天我在 SQL Server 2008R2 和 2012 中遇到了一个非常奇怪的问题 我正在尝试使用串联和结合来构建一个字符串select陈述 我发现生成的字符串仅包含一个输入字符串 不是我所期望的所有输入字符串的串联结果 我已经找到了解
  • Fabric Crashlytics - 聚合来自不同项目的数据

    我有几个自定义的应用程序 它们具有不同的包名称 捆绑 ID 崩溃数据将被发送到 Fabric Crashlytics 仪表板中的不同应用程序 我猜它们有不同的包名称 即使崩溃数据相同 相同类型 相同异常 我的问题是 这可能吗 或者有没有办法
  • 调用退出后无法将握手入队

    我已经实现了以下代码 module exports getDataFromUserGps function callback connection connect connection query SELECT FROM usergps f
  • 自托管 WCF 服务器 - 从文件而不是证书存储加载证书

    我目前正在使用 wcf 服务器 并且希望从文件 资源 而不是证书存储加载我的证书 以使部署更容易 有什么想法如何做到这一点 感谢您的帮助 假设您使用双工通道 您可以从文件加载证书 如下所示 Load certificate file wit
  • 只获取数组的唯一值

    我是 javascript 的新手 我尝试使用不同的 但它不是我想要的 示例数组 let arr key 1 value dog key 1 value dog key 2 value cat key 3 value bird key 3
  • libgdx 剪切图像

    一段时间以来我一直在尝试 剪切 图像 我将解释为什么以及我尝试了什么 所以我想创建一个马力 条 只不过它不是条 而是一颗心 所以我认为这很容易 我所要做的就是让两张图片将它们画在彼此的顶部 然后只剪一张就可以了看起来好像 HP 正在丢失 但
  • 为什么我不能在 write-host 中使用 $_ ?

    我正在尝试将字符串数组通过管道传输到 write host 并显式使用 编写这些字符串 foo bar baz write host 但是 它失败了 输入对象无法绑定到命令的任何参数 因为该命令不采用管道输入 或者输入及其属性与采用管道输入
  • 如何向 FeathersJS 套接字连接添加参数

    我正在开发一个使用 FeathersJS 服务器的应用程序 以及一个使用 FeathersJS Socket io 客户端连接到服务器的 Electron 应用程序 我想使用 Electron 应用程序中的通道在服务器中的某些数据发生更改时
  • 将 python 中的数据框重塑为 3D

    我正在尝试将手写字符数据集重塑为 3D 形式 以便它可以与数字识别数据集连接起来 我尝试了多次 但我不知道如何做到这一点 实际的数字识别数据集的形状为 60000 28 28 字符识别数据集的形状为 372450 785 第一列是目标变量
  • 在 C++ 中从 YUV 转换为 RGB (android-ndk)

    我在 android 中开发 想要将相机的预览回调中的字节数组 YUV 格式 转换为 rgb 格式 我已经使用了这个答案中给出的函数 在Android中从视频图像获取帧 它在java中完美运行 但我的问题是我想在c 中创建该函数 我正在使用
  • mechanize (python) 单击 javascript 类型链接

    是否可以让 mechanize 跟随 javascript 类型的锚链接 我正在尝试使用 mechanize 和 beautifulsoup 登录 python 网站 这是锚链接 a href a