我正在使用BeautifulSoup刮一个url,我有以下代码 import urllib import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.example.com/servlet/av/ResultTemplate=AVResult.html" req = urllib2.Request(url) response = urllib2.urlopen(req) the_page = response.read() soup = BeautifulSoup(the_page) soup.findAll('td',attrs={'class':'empformbody'}) 现在在上面的代码中,我们可以使用findAll来获取与它们相关的标签和信息,但是我想使用xpath,如果可能的话,可以使用xpath和BeautifulSoup,任何人都可以给我一个示例代码,以便它更有帮助。
有没有一个软件包,Ubuntu和/或CentOS,有一个命令行工具,可以像foo //element@attribute filename.xml或foo //element@attribute < filename.xml一样执行XPath并逐行返回结果? 我正在寻找的东西,可以让我只是apt-get install foo或yum install foo ,然后只是开箱即用,没有包装或其他适应需要。 以下是一些接近的例子: 引入nokogiri。 如果我写这个包装器,我可以按照上面描述的方式调用包装器: #!/usr/bin/ruby require 'nokogiri' Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row| puts row end XML :: XPath的。 将使用这个包装: #!/usr/bin/perl use strict; use warnings; use XML::XPath; my $root = XML::XPath->new(ioref => 'STDIN'); for my $node ($root->find($ARGV[0])->get_nodelist) { print($node->getData, "\n"); } 来自XML :: XPath的xpath返回的噪音太多, — NODE –和attribute […]
我想操纵默认的命名空间,但没有前缀的XML文档。 有没有一种方法来使用没有命名空间uri的xpath,就像没有命名空间一样? 我相信它应该是可能的,如果我们将documentBuilderFactory的namespaceAware属性设置为false。 但在我的情况下,这是行不通的。 我的理解是不正确的,或者我在代码中犯了一些错误? 这是我的代码: DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); domFactory.setNamespaceAware(false); try { DocumentBuilder builder = domFactory.newDocumentBuilder(); Document dDoc = builder.parse("E:/test.xml"); XPath xPath = XPathFactory.newInstance().newXPath(); NodeList nl = (NodeList) xPath.evaluate("//author", dDoc, XPathConstants.NODESET); System.out.println(nl.getLength()); } catch (Exception e) { e.printStackTrace(); } 这是我的xml: <?xml version="1.0" encoding="UTF-8"?> <root xmlns="http://www.mydomain.com/schema"> <author> <book title="t1"/> <book title="t2"/> </author> </root>
类似.//div[@id='foo\d+]来捕获id='foo123' div标签。 如果有问题,我正在使用.NET。
比方说,我有一个大型的HTML文件,其中包含不同types的标签,类似于您现在正在查看的StackOverflow。 现在让我们假设你单击页面上的一个元素,那么Javascript函数看起来是什么样子,它会计算出引用该特定元素的最基本的XPath? 我知道有一种在XPath中引用这个元素的无限方式,但是我正在寻找一些只看DOM树的东西,而不考虑ID,类等等。 例: <html> <head><title>Fruit</title></head> <body> <ol> <li>Bananas</li> <li>Apples</li> <li>Strawberries</li> </ol> </body> </html> 假设你点击苹果 。 Javascript函数将返回以下内容: /html/body/ol/li[2] 它基本上只是向上到DOM树一直到HTML元素。 只是为了澄清,“点击”事件处理程序不是问题。 我可以做这个工作。 我只是不知道如何计算DOM树中的元素的位置,并将其表示为XPath。 PS有或没有使用JQuery库的任何答案表示赞赏。 PPS我对XPath完全陌生,所以我甚至可能在上面的例子中犯了一个错误,但是你会明白的。 在2010年8月11日编辑:看起来像别人问了一个类似的问题: 生成/获取选定文本节点的Xpath
例如,下面的xml <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD title="EMPIRE BURLESQUE"/> <CD title="EmPiRe BuRLeSQuE"/> <CD title="Others"/> <CATALOG> 如何匹配xpath的前4条logging如//CD[@title='empire burlesque'] 。 有xpath函数来做到这一点? 其他解决scheme,如PHPfunction也被接受。
反正有没有在Javascript中返回一个DOM元素的XPathstring?
我正在写一个Seleniumtesting用例。 这里是我用来匹配数据表中所有“修改”button的xpathexpression式。 //img[@title='Modify'] 我的问题是,如何通过索引访问匹配的节点集? 我试过了 //img[@title='Modify'][i] 和 //img[@title='Modify' and position() = i] 但都没有工作..我也尝试过XPath检查器(一个Firefox扩展)。 总共find13个匹配,然后我完全不知道如何select其中一个。 或者XPath支持指定不在同一父节点下的节点的select?
我有一个XML文件forms的OWL文档。 我想从这个文档中提取元素。 我的代码适用于简单的XML文档,但不适用于OWL XML文档。 实际上我正在寻找这个元素: /rdf:RDF/owl:Ontology/rdfs:label ,为此我做了这个: DocumentBuilder builder = builderfactory.newDocumentBuilder(); Document xmlDocument = builder.parse( new File(XpathMain.class.getResource("person.xml").getFile())); XPathFactory factory = javax.xml.xpath.XPathFactory.newInstance(); XPath xPath = factory.newXPath(); XPathExpression xPathExpression = xPath.compile("/rdf:RDF/owl:Ontology/rdfs:label/text()"); String nameOfTheBook = xPathExpression.evaluate(xmlDocument,XPathConstants.STRING).toString(); 我也尝试以这种方式只提取rdfs:label元素: XPathExpression xPathExpression = xPath.compile("//rdfs:label"); NodeList nodes = (NodeList) xPathExpression.evaluate(xmlDocument, XPathConstants.NODESET); 但是这个节点列表是空的。 请让我知道我要去哪里错了。 我正在使用Java XPath API。
我试图写我自己的预期条件。 我需要什么…我有一个iframe。 而且我也有一个形象。 当图像的scr会改变时,我想继续处理。 我做了什么: class url_changed_condition(object): ''' Checks whether url in iframe has changed or not ''' def __init__(self, urls): self._current_url, self._new_url = urls def __call__(self, ignored): return self._current_url != self._new_url 后来在代码中我有: def process_image(self, locator, current_url): try: WebDriverWait(self.driver, 10).until(ec.presence_of_element_located((By.TAG_NAME, u"iframe"))) iframe = self.driver.find_element(*locator) if iframe: print "Iframe found!" self.driver.switch_to_frame(iframe) WebDriverWait(self.driver, 10).until(ec.presence_of_element_located((By.XPATH, u"//div"))) # WebDriverWait(self.driver, […]