我想使用python mechanize填写此页面上的表单,然后记录响应.我该怎么办?当我使用以下代码在此页面上搜索表单时,它仅显示搜索的表单.如何找到其他表单的表单名称以及名称,性别等字段?
http://aapmaharashtra.org/join-us
码:
import mechanize
br=mechanize.Browser()
br.open("http://aapmaharashtra.org/join-us")
for form in br.forms():
print "Form name:", form.name
print form
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用xml.etree.ElementTree来解析xml文件,查找特定标记,将子项附加到该标记,将另一个子项附加到新创建的标记并将文本添加到后一个子项.
我的XML:
<root>
<a>
<b>
<c>text1</c>
</b>
<b>
<c>text2</c>
</b>
</a>
</root>
Run Code Online (Sandbox Code Playgroud)
期望的XML:
<root>
<a>
<b>
<c>text1</c>
</b>
<b>
<c>text2</c>
</b>
<b>
<c>text3</c>
</b>
</a>
</root>
Run Code Online (Sandbox Code Playgroud)
当前代码:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for x in root.iter():
if (x.tag == 'a'):
ET.SubElement(x, 'b')
ET.SubElement(x, 'c')
#add text
Run Code Online (Sandbox Code Playgroud)
这似乎有效,除了'c'作为'a'而不是'b'的孩子.
像这样:
<root>
<a>
<b>
<c>test1</c>
</b>
<b>
<c>test2</c>
</b>
<b /><c/></a>
</root>
Run Code Online (Sandbox Code Playgroud)
另外,如何将文本添加到新创建的元素"c"中?我可以迭代直到找到没有文字的标签'c',但必须有更好的方法.
我有这个简单的代码帮助我测量类的__slots__执行方式(从这里开始):
import timeit
def test_slots():
class Obj(object):
__slots__ = ('i', 'l')
def __init__(self, i):
self.i = i
self.l = []
for i in xrange(1000):
Obj(i)
print timeit.Timer('test_slots()', 'from __main__ import test_slots').timeit(10000)
Run Code Online (Sandbox Code Playgroud)
如果我通过python2.7运行它 - 我会在6秒左右得到一些东西 - 好吧,它比没有插槽时更快(并且内存效率更高).
但是,如果我在PyPy下运行代码(使用2.2.1 - 64位用于Mac OS/X),它开始使用100%CPU并且"从不"返回(等待几分钟 - 没有结果).
到底是怎么回事?我应该__slots__在PyPy下使用吗?
如果我传递不同的数字,会发生什么timeit():
timeit(10) - 0.067s
timeit(100) - 0.5s
timeit(1000) - 19.5s
timeit(10000) - ? (probably more than a Game of Thrones episode)
Run Code Online (Sandbox Code Playgroud)
提前致谢.
请注意,如果我使用namedtuples,则会观察到相同的行为:
import collections
import timeit …Run Code Online (Sandbox Code Playgroud) 我需要找到PyPI匹配特定正则表达式的所有包:
^django-.*?admin.*$
Run Code Online (Sandbox Code Playgroud)
基本上,包的名字应该与启动django-,并有admin后话.例如,以下包应该匹配:
django-redis-admin
django-admin-ckeditor
django-admintools-bootstrap
Run Code Online (Sandbox Code Playgroud)
我能做到pip search django-,但是有很多我不感兴趣的软件包.
是否pip提供了一种通过正则表达式查找包的方法?或者,我应该只是管的结果django-,以grep过滤掉无关的包?
此外,可能是一个的"交集" pip search django-,并pip search admin有助于太.
我正在使用unittest编写python测试并从命令行运行测试
nosetests --with-coverage -x
Run Code Online (Sandbox Code Playgroud)
当我在我的一个测试中包含numpy时,它也试图测试numpy包.示例输出:
...
Name Stmts Miss Cover Missing
-------------------------------------------------------------
CLOCK 39 33 15% 3, 7-13, 17, 20-25, 28-47
LFU 42 1 98% 52
LRU 95 9 91% 12, 64, 68, 101, 115-118, 131
LRU10 54 1 98% 68
LRU3 54 1 98% 68
argparse 1177 1177 0% 3-2361
cache 86 33 62% 36-47, 86-89, 95-116
common 87 54 38% 17, 20, 23, 28, 31-32, 35-36, 39, 42, 46, 48, 50, 52, 54, 57-64, 67-68, 72-89, 95-96, 102-107, …Run Code Online (Sandbox Code Playgroud) 我是selenium的新手,我正在编写一个刮刀,可以从给定的站点自动下载pdf文件.
以下是我的代码:
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2);
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "/home/jill/Downloads/Dinamalar")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf");
webobj = browser.find_element_by_id("download").click();
Run Code Online (Sandbox Code Playgroud)
我按照Selenium 文档和此链接中提到的步骤进行操作.我不确定为什么每次都会显示下载对话框.
有没有办法解决它,否则有一种方法可以提供"应用程序/所有",以便可以下载所有文件(解决方法)?
我试图找出一个办法以同样的方式使用,或者还好说,类似的方式,该标记选项cucumberJS用了protractor,但与JasminE,有没有办法来标记不同的场景,如:@smoke,@regression等等.然后告诉控制台运行那些?
我拒绝使用Cucumber,因为它的支持它似乎变得片状!
任何帮助都感激不尽!
在其中一个测试中,我需要滚动到一个元素的视图,这可以通过使用Protractor定位的元素参数化脚本的scrollIntoView()方法来完成:
var elm = element(by.id("myid"));
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
Run Code Online (Sandbox Code Playgroud)
但是,我们也可以通过getElementById()以下方式直接找到元素:
browser.executeScript("document.getElementById('myid').scrollIntoView();");
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
在scrollIntoView()被选择用于仅样品的目的.脚本中的逻辑可能更复杂.
雅虎财务更新了他们的网站 我有一个用于提取分析师建议的lxml/etree脚本.然而,现在,分析师的建议在那里,但仅作为图形.您可以在此页面上看到示例.右栏中名为"建议趋势"的图表显示了分析报告的数量,显示强买入,买入,持有,表现不佳和卖出.
我的猜测是雅虎会在接下来的一段时间内对页面进行一些调整,但它让我想知道这些数据是否可以以任何合理的方式提取?
我以前得到这样的来源:
url = 'https://finance.yahoo.com/quote/'+code+'/analyst?p='+code
tree = etree.HTML(urllib.request.urlopen(url).read())
Run Code Online (Sandbox Code Playgroud)
然后在html树中查找数据.但显然现在这是不可能的.
element(...).getWebElement()结束element(...)python ×7
javascript ×3
protractor ×3
selenium ×3
web-scraping ×3
cucumberjs ×1
elementtree ×1
forms ×1
jasmine ×1
lxml ×1
mechanize ×1
nosetests ×1
numpy ×1
packages ×1
performance ×1
pip ×1
pypy ×1
python-2.7 ×1
python-3.x ×1
regex ×1
slots ×1
testing ×1
unit-testing ×1
web-crawler ×1
xml ×1
xml-parsing ×1