Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在XML中使用XPath刮取具有不同值的节点_Xml_R_Xpath - Fatal编程技术网

在XML中使用XPath刮取具有不同值的节点

在XML中使用XPath刮取具有不同值的节点,xml,r,xpath,Xml,R,Xpath,我正在用R中非常有用的XML包抓取网页。我是XPath的初学者,我从中学习了XPath的基础知识。我想选择一个具有可变值属性的节点,但目前无法有效地执行此操作。下面显示了我的代码和遇到的问题: require(XML) myUrl<- "http://www.expatforum.com/expats/uae-expat-forum-expats-living-uae/336985-visa-overstay.html" extracted<- htmlParse(myUrl) #T

我正在用R中非常有用的
XML
包抓取网页。我是XPath的初学者,我从中学习了XPath的基础知识。我想选择一个具有可变值属性的节点,但目前无法有效地执行此操作。下面显示了我的代码和遇到的问题:

require(XML)
myUrl<- "http://www.expatforum.com/expats/uae-expat-forum-expats-living-uae/336985-visa-overstay.html"
extracted<- htmlParse(myUrl)
#This parses the HTML data, and a snippet from it is shown as follows
require(XML)
myUrl
在复杂的情况下寻求建议。我目前在阿联酋工作,是一名持有有效签证的教师。我男朋友持有效签证在这里住了10年,直到2013年。他和他的担保人(美元)之间存在分歧,他的签证在他不知情的情况下被取消。他甚至不知道他的签证有问题就被召进了警察局。他心甘情愿地去了,因为他没有什么可隐瞒的。他被捕入狱约一个月,然后被告知有三个月时间“解决”自己的问题。自那以后,这个问题一直在劳动法庭上,他目前没有签证住在这里(现在已经一年多了)。他已经给他的赞助人打了无数次电话,去了劳动部,没有人直接回答他能做些什么来取消他的名字,但自最初的事件以来,没有人逮捕他。他的赞助人说,他不再在乎,他会取消他的名字,但这已经在劳动法庭上,所以技术上他们无能为力。他想自首,这样他就可以支付逾期居留的费用,或者坐牢,或者重新申请另一个签证,或者去其他地方,但原籍国是叙利亚,他害怕他们会在没有任何其他安全选择的情况下把他送到那里。在面临越狱后,有人能选择他们的飞行地点吗?这是驱逐出境和无法在阿联酋再次申请签证的标准吗?有人知道这个过程是如何工作的吗?这是一个可怕的情况,他需要解决它,这样他才能重新开始他的生活。
现在,我想提取一篇文章的相关数据,包含在
标记中。使用
//div[@id]
似乎可以很容易地实现这一点。但是,在完整的文件中还有其他节点和属性,它们是“div id”

我认为唯一的解决方案就是以某种方式选择id属性的值。 但同样,该值的数值部分也不同。我尝试使用
//div[@id='post\u message.*']
,但没有成功

目前,我采用了一种更长、效率更低的方法,将
转换为(x,“字符”)
,使用
grepl(“^div id='post_message',x)
,然后使用
gsub()
删除不必要的位

请问有没有更好的办法

谢谢您的时间。

您可以


我在
selector
包的基础上添加了另一个答案,该包允许使用css选择器而不是xpath查询html文档。我发现css选择器更容易grep

library(selectr)
querySelector(extracted, 'div[id^=post_message]')

我们正在寻找id以
post\u message
开头的div

噢!亲爱的我,这样一个简单的解决方案,在同一页我链接!我应该读得更透彻,我的坏。。。非常感谢你!别担心。事实上,w3schools与w3.org是一个不同的网站。我链接到的w3.org页面是官方的XPath1.0规范。啊,是的,我刚刚检查过!再次感谢您除了简单地提供一个答案之外,还对我进行了XPath方面的教育!谢谢你给我指点
selector
,拉姆纳特教授!了解其他查询工具总是很棒的。
//div[starts-with(@id, "post_message")]
library(selectr)
querySelector(extracted, 'div[id^=post_message]')