PAMIE的几个问题

zydscaline 2011-09-22 12:11:40
用PAMIE3.0上百度,有几个问题一起来发下:
from PAM30 import PAMIE
>>> ie=PAMIE()
>>> ie.navigate('http://www.baidu.com/')
True
>>> ie.setTextBox('kw','python')
True
>>> ie.clickButton('su')

好了,到了搜索结果的页面,有几个问题一起来问下:
1、搜索出来的结果后,最左上角有一个百度的按钮,其源码是:<IMG height=38 alt=到
百度首页 src="http://www.baidu.com/img/baidu_jgylogo3.gif" width=117
border=0></A>怎么写点击它的语句?
2、新闻按钮的源码是:<A onmousedown="return c({'fm':'tab','tab':'news'})"
href="http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=PYTHON">
新闻</A>,又怎么写点它的语句?
3、怎么print出ie的源码?
4、如果只想要其中某个元素的源码,应该怎么写?如搜索出的第一个结果的源码?
...全文
257 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2011-09-25
  • 打赏
  • 举报
回复
我晕……
>>> '新闻'
'\xd0\xc2\xce\xc5'
>>> '新闻'.decode('gbk')
u'\u65b0\u95fb'
>>> u'新闻'
u'\u65b0\u95fb'
zydscaline 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 iambic 的回复:]
就是新闻的unicode码。为了防止编码乱码问题没有使用明文而已。
[/Quote]在网上找了下UNICODE的转换,新闻的UNICODE码是26032 38395 啊
zydscaline 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 iambic 的回复:]
就是新闻的unicode码。为了防止编码乱码问题没有使用明文而已。
[/Quote]那儿能在什么地方找到UNICODE编码转换的规则,总不能下次遇个旧闻也要到这儿问一下吧
zydscaline 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 iambic 的回复:]
我晕……

Python code

>>> '新闻'
'\xd0\xc2\xce\xc5'
>>> '新闻'.decode('gbk')
u'\u65b0\u95fb'
>>> u'新闻'
u'\u65b0\u95fb'
[/Quote]知了,就是转换为十六进制前面加个U,晕死啊
zydscaline 2011-09-24
  • 打赏
  • 举报
回复
郁闷中,普通的文本框和按钮我会啊,就是那些有些别钮的图片按钮和中文按钮,特别是中文按钮
试过:ie.clickButton(unicode('新闻',''gbk'))之类的都不行,100分求大家帮解决问题,一个二个就行,不行再加分
iambic 2011-09-24
  • 打赏
  • 举报
回复
就是新闻的unicode码。为了防止编码乱码问题没有使用明文而已。
zydscaline 2011-09-24
  • 打赏
  • 举报
回复
5楼的回复中说:
1. 点击左上角的logo:
ie.clickElement(ie.findElement('a', 'className', 'logo'))

2. 点击新闻链接:
ie.clickElement(ie.getLink(u'\u65b0\u95fb'))
注意ie.clickLink代码有个bug,对于参数是unicode的情况无法正常处理。

第一个还好理解,第二个怎么出来的ie.getLink(u'\u65b0\u95fb')??,为什么会这么写?

iambic 2011-09-24
  • 打赏
  • 举报
回复
另外4也可以考虑用innerText:
print ie.findElement('table', 'id', '1').innerText
iambic 2011-09-24
  • 打赏
  • 举报
回复
1. 点击左上角的logo:
ie.clickElement(ie.findElement('a', 'className', 'logo'))


2. 点击新闻链接:
ie.clickElement(ie.getLink(u'\u65b0\u95fb'))

注意ie.clickLink代码有个bug,对于参数是unicode的情况无法正常处理。

3. 略。

4. 第一条搜索结果的HTML:
print ie.findElement('table', 'id', '1').innerHTML
panghuhu250 2011-09-24
  • 打赏
  • 举报
回复
看起来像是编码的问题:也许unicode('新闻', 'gbk')和你得到html文件中的'新闻'两字的编码不同。

findElement可以用其他的参数(例如attributes)来定位元素,你可以想办法避免用中文字符定位。
panghuhu250 2011-09-23
  • 打赏
  • 举报
回复
看PAMIE的代码。

实现1,2无非是先找到相应的元素,再点击。
大概浏览了一下它的代码,有些方法findxxx,getxxx可以用来找相应的元素,又有clickElement方法实现点击。

另外,还有一些clickImage, clickLink之类的方法可以直接用。这些方法做的其实也是前面讲的两步。例如下面的clickImage.


# 引自PAM30.py by Robert L. Marchetti
def clickImage(self, name):
""" Clicks an image
parameters:
name The id, name, src or index of the image
returns:
True on success, else False
"""
if isinstance(name, str) or isinstance(name, int):
myImage = self.getImage(name)
else:
myImage = name
return self.clickElement(myImage)
zydscaline 2011-09-22
  • 打赏
  • 举报
回复
来说下第三个的答案:
print ie.outerHTML()

其余的问题大家帮下啊

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧