我在Windows平台上安装了lxml2.2.2(即使用python版本2.6.5).我尝试了这个简单的命令:
from lxml.html import parse
p= parse(‘http://www.google.com’).getroot()
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Traceback (most recent call last):
File “”, line 1, in p=parse(‘http://www.google.com’).getroot()
File “C:\Python26\lib\site-packages\lxml-2.2.2-py2.6-win32.egg\lxml\html_init_.py”, line 661, in parse return etree.parse(filenameorurl, parser, baseurl=baseurl, **kw)
File “lxml.etree.pyx”, line 2698, in lxml.etree.parse (src/lxml/lxml.etree.c:49590)
File “parser.pxi”, line 1491, in lxml.etree.parseDocument (src/lxml/lxml.etree.c:71205) File “parser.pxi”, line 1520, in lxml.etree.parseDocumentFromURL (src/lxml/lxml.etree.c:71488)
File “parser.pxi”, line 1420, in lxml.etree.parseDocFromFile (src/lxml/lxml.etree.c:70583)
File “parser.pxi”, line 975, in lxml.etree.BaseParser.parseDocFrom
File (src/lxml/lxml.etree.c:67736)
File “parser.pxi”, line 539, in lxml.etree.ParserContext.handleParseResultDoc (src/lxml/lxml.etree.c:63820)
File “parser.pxi”, line 625, in lxml.etree.handleParseResult (src/lxml/lxml.etree.c:64741) …
Run Code Online (Sandbox Code Playgroud) 如果我指定命名空间,使用以下代码我希望能够搜索目标标记.
import xml.etree.ElementTree as ET
xml = """<?xml version="1.0" encoding="UTF-8"?>
<xyz2:outer xmlns:xyz1="http://www.company.com/url/common/v1"
xmlns:xyz2="http://www.company.com/app/v2"
version="9.0"
something="false">
<xyz2:inner>
<xyz2:target>
<xyz1:idType>name</xyz1:idType>
<xyz1:id>A Name Here</xyz1:id>
</xyz2:target>
</xyz2:inner>
</xyz2:outer>"""
tree = ET.fromstring(xml)
print tree[0][0]
# <Element '{http://www.company.com/app/v2}target' at 0x7f3c294374d0>
tree.find('{http://www.company.com/app/v2}target')
# None
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都无法找到目标标签?
我已经尝试了各种ElementTree实现,包括lxml,其中涉及{*}
名称空间.没有骰子?
我正在使用python suds模块,并希望从suds响应中检索响应头(特别是Last-Modified).
我正在写一个快速的web.py应用程序并从web.input获取数据...
import web
urls = (
'/', 'something',
)
app = web.application(urls, globals())
db = web.database(dbn='postgres', db='database', user='username', password='password', host='127.0.0.1')
class something:
def GET(self):
i = web.input()
return db.select('foo.table', where="column=$variable", vars={'variable':i.input, })
if __name__ == "__main__": app.run()
Run Code Online (Sandbox Code Playgroud)
我应该担心将i.input传递给db.select(或查询等),就像我作为vars的一部分一样吗?SQL注入的可能性等?
编辑:我一直在玩这个,试图让一些令人讨厌的事情发生.例如,使用引用,http:// localhost:8080 /?id = 13'或'x'='x会导致在异常中显示很好的转义sql:
<sql: 'select * from foo.table where id = "13\' or \'x\'=\'x"'>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了互联网提出的一些其他常见测试,并认为我很高兴web.py正在处理卫生处理......还有其他人可以发表评论吗?
python ×4
elementtree ×1
http ×1
lxml ×1
parsing ×1
psycopg2 ×1
python-2.4 ×1
python-2.7 ×1
soap ×1
suds ×1
web.py ×1
windows ×1
xml ×1