我是python的新手,我需要一些帮助来查找和使用lxml查找和迭代html标签的语法.以下是我正在处理的用例:
HTML文件格式很好(但并不完美).屏幕上有多个表,一个包含一组搜索结果,另一个包含页眉和页脚.每个结果行都包含搜索结果详细信息的链接.
我需要找到带有搜索结果行的中间表(这是我能够弄清楚的):
self.mySearchTables = self.mySearchTree.findall(".//table")
self.myResultRows = self.mySearchTables[1].findall(".//tr")
Run Code Online (Sandbox Code Playgroud)我需要找到此表中包含的链接(这是我遇到的问题):
for searchRow in self.myResultRows:
searchLink = patentRow.findall(".//a")
Run Code Online (Sandbox Code Playgroud)
它似乎没有真正找到链接元素.
我需要链接的纯文本.我想searchLink.text如果我真的得到了链接元素就好了.
最后,在lxml的实际API参考中,我无法找到有关find和findall调用的信息.我从谷歌上找到的一些代码中收集了这些内容.我是否遗漏了一些关于如何使用lxml有效地查找和迭代HTML标记的内容?
根据@ SO的建议,我已经编制了一组库存图像的平均颜色.
r,g,b = image.convert("RGB").resize((1,1),Image.ANTIALIAS).getpixel((0,0))
现在,我想向用户呈现一个色轮,并对我的目录运行搜索,以查找与所选颜色最匹配的图像.
我已经阅读了这里发布的几个问题,建议"找到两种颜色之间的距离",并参考Flickr Hacks一书.
Flickr Hack距离算法似乎基本上是:
diffr = checkImage.r - search_r
diffg = checkImage.g - search_g
diffb = checkImage.b - search_b
distance =(diffr*diffr + diffg*diffg + diffb*diffb)
如果距离<threshold则匹配.
这种方法需要我计算搜索颜色和每个图像的颜色指纹之间的距离.我想知道是否有办法以某种方式根据所选颜色(中心点)和预定阈值(或搜索半径)指定"搜索区域".然后构造一个类似SQL的查询来返回属于该区域的所有图像.
这可能吗??
顺便说一下,我正在使用PIL和相关库在Python中实现它.
谢谢你的帮助!
SR
在过去的几年中,我在MySQL空间设计了几个应用程序,然后不断改进性能和可扩展性方面,我感到很自在.我也有一些使用memcached的经验,可以在经常查询的结果集上提供应用程序端加速.最近我将Amazon SDB作为我电子商务实验的主要"数据库".
为了过度简化,我在脑海中使用SDB服务的快速理由是,使用无模式数据库结构可以让我专注于我的项目的逻辑问题,并在我的数据存储中快速累积内容.也就是说,不要担心事先设置和规范产品属性的所有可能排列; 只需开始加载产品,SDB就会记住所有可用的东西.
现在我已经设法完成了项目的前几次迭代,并且我需要为数据设置简单的接口,我正在运行我曾经认为与MySQL合作的问题.例如:在select语句中进行分组并限制语法以查询"items 50到100".我使用SDB的无架构体系结构获得的轻松优势,使用仅超过1800个项目查询/循环结果集而失去了性能.
现在我正在阅读像Tokyo Cabinet这样的项目,这些项目正在扩展内存中键值存储的概念,以极其快的速度提供伪关系功能(14x我在某处阅读).
我的问题:我作为应用程序设计人员/开发人员可以通过哪些基本指导或启发式方法来评估哪个数据库技术最适合我项目的每个阶段.
例如:在原型设计阶段,应用程序的逻辑/技术未知数使数据结构变得流畅:使用SDB.在用户可交付成为优先级的更成熟的阶段,使用传统工具,您不必花时间编写排序,分组或分页逻辑.
非常感谢使用这些工具的实际经验.
谢谢!
沙希布
Twill作为网络自动化工具仍然具有相关性吗?如果是,那么为什么目前没有维护?如果不是,那么Mechanize是否已经进一步成熟以支持Twill风格的简单脚本?或者是否有另一个包装已经加紧填补空白?
我能够使用Twill在python中快速设置几个测试套件,但是我对如何访问Twill在我的python程序中吐出的信息感到困惑.也就是说,我可以执行showforms()并查看整齐列出的表单值,我可以使用fv更新表单值并提交.但是如何以python var的形式访问其中一个表单值?我怎么能这样说:someField1Value = fv("1","someField1")