标签: mechanize-python

如何从标题中的Content-Disposition获取文件名

我正在使用Mechanize下载文件,并在响应头中有一个字符串:

Content-Disposition: attachment; filename=myfilename.txt
Run Code Online (Sandbox Code Playgroud)

是否有快速标准的方法来获取该文件名值?我现在想到的是:

filename = f[1]['Content-Disposition'].split('; ')[1].replace('filename=', '')
Run Code Online (Sandbox Code Playgroud)

但它看起来像一个快速的解决方案.

python mechanize-python

25
推荐指数
2
解决办法
2万
查看次数

无法按下按钮

我正在尝试为游戏编写机器人代码,并需要一些帮助来完成它.作为一个完整的菜鸟,我用谷歌搜索了如何使用python并开始阅读有关机械化的内容.

<div class="clearfix">
                    <a href="#" onclick="return Index.submit_login('server_br73');">
            <span class="world_button_active">Mundo 73</span>
        </a>
                    </div>
Run Code Online (Sandbox Code Playgroud)

我的问题是登录,我现在有这个原始代码:

import requests
import requesocks
import xlrd
import socks
import socket
import mechanize
import selenium
from bs4 import BeautifulSoup

# EXCEL
file_location = "/home/luis/Dropbox/Projetos/TW/multisbr.xlsx"
wb = xlrd.open_workbook(file_location)
sheetname = wb.sheet_names ()
sh1 = wb.sheet_by_index(0)

def nickNm():
    lista = [sh1.col_values(0, x) for x in range (sh1.ncols)]
    listaNomes = lista [1]
    x < 1
    print listaNomes
def passwd():
    lista = [sh1.col_values(1, x) for x in range (sh1.ncols)]
    listaPasswd = lista …
Run Code Online (Sandbox Code Playgroud)

python automation mechanize mechanize-python

12
推荐指数
1
解决办法
498
查看次数

Python:如何转储mechanize.Browser实例的cookie?

我正在学习如何使用mechanize,一个Python模块来自动化与网站的交互.

一个功能是自动处理cookie.我想从mechanize.Browser实例中转储cookie以进行调试,但我似乎无法自己解决这个问题.

python cookies mechanize-python

11
推荐指数
2
解决办法
1万
查看次数

CertificateError:hostname不匹配

我正在使用代理(在公司防火墙后面)登录到https域.SSL握手似乎进展不顺利:

CertificateError: hostname 'ats.finra.org:443' doesn't match 'ats.finra.org' 
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 2.7.9 - Mechanize,我已经通过了所有的登录,密码,安全问题屏幕,但它正在挂起认证.

任何帮助都会很棒.我试过在这里找到的monkeywrench:强制Mechanize使用SSLv3

但是对我的代码不起作用.

如果你想要我愿意发送的代码文件.

python ssl mechanize mechanize-python

11
推荐指数
3
解决办法
2万
查看次数

Python Mechanize选择表单FormNotFoundError

我想选择一个机械化的表格.这是我的代码:

br = mechanize.Browser()
self.br.open(url)
br.select_form(name="login_form")
Run Code Online (Sandbox Code Playgroud)

表格的代码:

<form id="login_form" onsubmit="return Index.login_submit();" method="post" action="index.php?action=login&server_list=1">
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

mechanize._mechanize.FormNotFoundError: no form matching name 'login_form
Run Code Online (Sandbox Code Playgroud)

python mechanize mechanize-python

10
推荐指数
1
解决办法
6973
查看次数

如何让机械化请求看起来像是来自真正的浏览器

好的,这是我在登录帐户时从Live HTTP Header获得的标题(只是一个示例)信息:

http://example.com/login.html

POST /login.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://example.com
Cookie: blahblahblah; blah = blahblah
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
username=shane&password=123456&do=login

HTTP/1.1 200 OK
Date: Sat, 18 Dec 2010 15:41:02 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.2.14
Set-Cookie: blah = blahblah_blah; expires=Sun, 18-Dec-2011 15:41:02 GMT; path=/; domain=.example.com; HttpOnly
Set-Cookie: blah = blahblah; expires=Sun, 18-Dec-2011 …
Run Code Online (Sandbox Code Playgroud)

python mechanize http-post http-headers mechanize-python

9
推荐指数
2
解决办法
2万
查看次数

使用mechanize提交表单(TypeError:ListControl,必须设置序列)

我正在尝试提交一个带有机械化的表单但是遇到了错误(TypeError:ListControl,必须设置一个序列)在谷歌搜索一段时间后尝试了几个不同的解决方案我无法解决问题.我正在尝试提交所有字段.

通过mechanize获取的表单数据(对于br.forms()中的f打印:f)

<POST http://www.example.com/takeupload.php multipart/form-data
<HiddenControl(MAX_FILE_SIZE=1000000) (readonly)>
<TextControl(<None>=http://www.example.com:81/test.php?pass=550) (readonly)>
<FileControl(file=<No files added>)>
<TextControl(name=)>
<SelectControl(type=[*0, 23, 22, 1, 10, 7, 18, 4, 21, 56, 20, 60, 5, 19, 6, 55, 63, 9])>
<CheckboxControl(strip=[strip])>
<FileControl(nfo=<No files added>)>
<TextareaControl(descr=)>
<SubmitControl(<None>=Do it!) (readonly)>>
Run Code Online (Sandbox Code Playgroud)

我目前的代码

br.open('http://www.bitfarm.co.za/upload.php')

br.select_form(nr=4)

filename = 'test.torrent'
br.form.add_file(open(filename), 'application/x-bittorrent', filename, name='file') 
br.form['name'] = 'test'
br.form['type'] = '22'
br.form['strip'] = '0'
br.form['nfo'] = ''
br.form['descr'] = 'This is the desc'

br.submit()
Run Code Online (Sandbox Code Playgroud)

请问你能帮忙并检查我是否使用了正确的表单选项语法.谢谢

python mechanize-python

8
推荐指数
1
解决办法
5848
查看次数

机械化和Python,单击href ="javascript:void(0);" 链接并获得回复

我需要从页面中删除一些数据,我填写表单(已经使用mechanize进行了此操作).问题是,页面在很多页面上返回数据,而且从这些页面获取数据我遇到了麻烦.

从第一个结果页面获取它们没有问题,因为它在搜索后已经显示 - 我只需提交表单并获得响应.

我分析了结果页面的源代码,似乎它使用了Java Script,RichFaces(JSF的一些lib和ajax,但我可能是错的,因为我不是网络专家).

但是,我设法弄清楚如何到达剩余的结果页面.我需要点击此表单中的链接(href="javascript:void(0);"以下完整代码):

<td class="pageNumber"><span class="rf-ds " id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233"><span class="rf-ds-nmb-btn rf-ds-act " id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_1">1</span><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_2">2</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_3">3</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_4">4</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_5">5</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_6">6</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_7">7</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_8">8</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_9">9</a><a class="rf-ds-nmb-btn " href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_10">10</a><a class="rf-ds-btn rf-ds-btn-next" href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_next">»</a><a class="rf-ds-btn rf-ds-btn-last" href="javascript:void(0);" id="SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_l">»»»»</a>

<script type="text/javascript">new RichFaces.ui.DataScroller("SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233",function(event,element,data){RichFaces.ajax("SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233",event,{"parameters":{"SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233:page":data.page} ,"incId":"1"} )},{"digitals":{"SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_9":"9","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_8":"8","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_7":"7","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_6":"6","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_5":"5","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_4":"4","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_3":"3","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_1":"1","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_10":"10","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_2":"2"} ,"buttons":{"right":{"SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_next":"next","SomeSimpleForm:SomeSimpleTable:j_idt211:j_idt233_ds_l":"last"} } ,"currentPage":1} )</script></span></td>
<td class="pageExport"><script type="text/javascript" src="/opi/javax.faces.resource/download.js?ln=js/component&amp;b="></script><script type="text/javascript">
Run Code Online (Sandbox Code Playgroud)

所以我想问一下是否有办法点击所有链接并使用mechanize获取所有页面(注意,»符号之后有更多页面可用)?我用网络知识询问总傻瓜的答案:)

javascript python ajax mechanize mechanize-python

7
推荐指数
1
解决办法
2592
查看次数

机械化:打开太多值(预期2)

我曾尝试编写以下代码,我正在尝试编写一个代码Python 3.7,只需打开一个Web浏览器并将网站提供给它Command Line:

Example.py

import sys

from mechanize import Browser
browser = Browser()

browser.set_handle_equiv(True)
browser.set_handle_gzip(True)
browser.set_handle_redirect(True)
browser.set_handle_referer(True)
browser.set_handle_robots(False)

# pretend you are a real browser
browser.addheaders = [('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36')]

listOfSites = sys.argv[1:]
for i in listOfSites:
    browser.open(i)
Run Code Online (Sandbox Code Playgroud)

我在以下命令中输入了以下命令cmd:

python Example.py https://www.google.com
Run Code Online (Sandbox Code Playgroud)

我有以下追溯:

Traceback (most recent call last):
  File "Example.py", line 19, in <module>
    browser.open(i)
  File "C:\Python37\lib\site-packages\mechanize\_mechanize.py", line 253, in open
    return self._mech_open(url_or_request, data, timeout=timeout) …
Run Code Online (Sandbox Code Playgroud)

python mechanize-python

6
推荐指数
1
解决办法
425
查看次数

如何使用python填写和提交表单

我在机械化模块的帮助下填写网页表单,但在运行代码时出现错误。我只想填写表格并成功提交。

我的尝试:

堆栈答案中的代码片段

import re
from mechanize import Browser

username="Bob"
password="admin"
br = Browser()

# Ignore robots.txt
br.set_handle_robots( False )
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]

br.open("https://fb.vivoliker.com/app/fb/token")
br.select_form(name="order")
br["u"] = [username]  
br["p"]=[password]

response = br.submit()  
Run Code Online (Sandbox Code Playgroud)

输出: 错误(FormNotFoundError)

但是我应该输入什么名称,br.select_form()因为当我看到网页的源代码时,它们没有设置为该表单的名称属性。

来自网页的表单的 Html 源代码

<div class="container">
<form ls-form="fb-init">
<input type="hidden" name="machine_id">
<div class="form-group row">
<input id="u" type="text" class="form-control" placeholder="Facebook Username / Id / Email / Mobile Number" required="required">
</div>
<div class="form-group row"> …
Run Code Online (Sandbox Code Playgroud)

python mechanize mechanize-python

5
推荐指数
1
解决办法
387
查看次数