大概是这样的吧 可以试试
jquery有个 parents()
比如选了一个div id为test,想整xpath的话 $("#test")parents();这样获取的是一个数组,
var aa = [];
$('#test')parents()each(function(){
aapush(thistagName);
});
获取标签名后 就可以替换成xpath了 不过需要注意的是 这个不止获取到body 最后一个元素应该是到html,也不太确定,反正在firefox上是这样的
题主你好,
只用xpath我感觉无法达到题主的目的,因为在我的知识体系中, xpath的最小单位是一个结点或叫一个标签,
也就是说要不你提取value标签,其内容如下:
要不你提取span标签,内容如下:
而上面这两种题主肯定都会, 也不是想要的
-----
所以我能想到的方法有两种:
一种是在提取前使用js将span标签给去掉, 然后就能使用提取value标签的相关xpath得到题主想要的了;
另一种是先将含有span标签的value标签内容提取出来, 然后用正则表达式将span标签给去掉;
-----
如果上面两种方法满足题主的需求,请题主追问说明所用的语言和库,我再补充
=====
希望可以帮到题主, 欢迎追问
在爬取网页的过程中,经常会遇到一些d窗的情况,有alert、confirm、prompt等三种,区别如下:
提示消息框 提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个“确定”按钮和一个“取消”按钮。如果您提供了一个辅助字符串参数,则提示消息框将在文本字段显示该辅助字符串作为默认响应。否则,默认文本为 "<undefined>"。
这三种d窗的共同点是,d出之后你是获取不到任何网页内容的,也就是无法通过常规的driverfind_element_by_xpath这种形式来获取元素。F12是没有任何内容,也无法点选的。
selenium另外有一套方法来把driver转换到d窗上:
其中driver就是你设置好的浏览器句柄,switch_toalert代表你当前的d窗类型,alert就对应alert,accept的意思就是点确定,另外还有dismiss等用法,网上很多了,不详细说。
用这个语句,就可以把d窗点掉,之后正常 *** 作,但是我重点想说的是以下内容:
在实际网页中,往往d窗会有一定延时,这时候你用这个语句就会报一个no such alert的错误,意味着获取不到d窗,此时要用如下的办法解决:
引用Webdriver类,里面的参数第一个是句柄,第二个则是超时等待时间,这里是10秒钟。
Webdriver这种方法叫做 显示等待 ,用一个默认频率不停的刷新(默认是05s),检测当前页面元素是否存在,如果超过10秒则抛出TimeOut。
很显然,这种方法比一般的sleep效率要高。
waituntil(ECalert_is_present())就是判断d窗是否存在,如果存在,那么就不会抛出异常,继续走下一步也就是获取到d窗点击确定。
之后就可以进行正常的 *** 作了。
xpath获取同级节点
XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:
1、child 选取当前节点的所有子元素
2、parent 选取当前节点的父节点
3、descendant 选取当前节点的所有后代元素(子、孙等)
4、ancestor 选取当前节点的所有先辈(父、祖父等)
5、descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
6、ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
7、preceding-sibling 选取当前节点之前的所有同级节点
8、following-sibling 选取当前节点之后的所有同级节点
9、preceding 选取文档中当前节点的开始标签之前的所有节点
10、following 选取文档中当前节点的结束标签之后的所有节点
11、self 选取当前节点
12、attribute 选取当前节点的所有属性
13、namespace 选取当前节点的所有命名空间节点
如:要定位当前td同级后的一个td
//td[='text']/following-sibling::td
<html >
<head>
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
function judge()
{
if (documentform1nicknamevalue=="")
{alert("请输入你的昵称");return false;}
if (documentform1qqvaluelength<5||documentform1qqvaluelength>9)
{alert("请输入你正确的QQ号");return false;}
var mailstr;
mailstr=documentform1mailvalue;
if (mailstrindexOf("@")==-1)
{alert("请输入你正确的E-mail地址");return false;}
if (documentform1liuyanvalue=="")
{alert("请输入留言!");return false;}
return true;
}
</script>
</head>
<body>
<form name="form1" method="post" action="" onsubmit="return judge()">
昵称:
<input name="nickname" type="text" id="nickname" size="13" maxlength="20">
QQ号:
<input name="qq" type="text" id="qq" size="16" maxlength="10">
E-mail:
<input name="mail" type="text" id="mail" size="35">
个人网站:
<input name="wanzhan" type="text" id="wanzhan">
<input type="submit" name="Submit" value="提交">
<input name="reset" type="reset" id="reset" value="重置">
</form>
</body>
</html>分享给你的朋友吧:i贴吧 新浪微博腾讯微博QQ空间人人网豆瓣MSN
对我有帮助
0
以上就是关于请教D7中如何使用xpath路径获取到网页某标签的内容全部的内容,包括:请教D7中如何使用xpath路径获取到网页某标签的内容、关于python的使用xpath怎样获取如下内容、Selenium-针对alertd窗无法获取,d出no such alert的解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)