我正在使用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并开始阅读有关机械化的内容.
<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) 我正在学习如何使用mechanize,一个Python模块来自动化与网站的交互.
一个功能是自动处理cookie.我想从mechanize.Browser实例中转储cookie以进行调试,但我似乎无法自己解决这个问题.
我正在使用代理(在公司防火墙后面)登录到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
但是对我的代码不起作用.
如果你想要我愿意发送的代码文件.
我想选择一个机械化的表格.这是我的代码:
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) 好的,这是我在登录帐户时从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) 我正在尝试提交一个带有机械化的表单但是遇到了错误(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)
请问你能帮忙并检查我是否使用了正确的表单选项语法.谢谢
我需要从页面中删除一些数据,我填写表单(已经使用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&b="></script><script type="text/javascript">
Run Code Online (Sandbox Code Playgroud)
所以我想问一下是否有办法点击所有链接并使用mechanize获取所有页面(注意,»符号之后有更多页面可用)?我用网络知识询问总傻瓜的答案:)
我曾尝试编写以下代码,我正在尝试编写一个代码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) 我在机械化模块的帮助下填写网页表单,但在运行代码时出现错误。我只想填写表格并成功提交。
我的尝试:
此堆栈答案中的代码片段
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) mechanize-python ×10
python ×10
mechanize ×6
ajax ×1
automation ×1
cookies ×1
http-headers ×1
http-post ×1
javascript ×1
ssl ×1