2016-04-28 1 views
1

私はPythonとXPathを使ってウェブサイトを解析しています。私がやろうとしている何Xpathを指定しないとページ全体が解析されない

<a>

からのhrefを抽出することであることだからここにXML(ページ)である方法は次のとおりです。

<div id="post"> 
    <div align="center"> 
    <table> 
     <tbody> 
     <tr> 
      <td> 
      <td> 
      <a href="test01"> 
     <tr> 
      <td> 
     <tr> 
      <td> 
    <div align="center"> 
    <table> 
     <tbody> 
     <tr> 
      <td> 
      <td> 
      <a href="test01"> 
     <tr> 
      <td> 
     <tr> 
      <td> 

そして、ここでは、私がやったコードです

posts = page.xpath("//div[@id='posts']/div[@align='center']") 
for post in posts : 
    print post.xpath("//table/tr[1]/td[2]/a/@href") 

しかし、問題はすべてのhrefがpostsであり、1つではないことです。post

私は間違っていますか?

答えて

1

/文字で始まるXPathは、ドキュメントルートノードから始まることを意味します。コンテキストノードから相対XPathを作成するには、/の前に.を配置する必要があります。

だからあなたのコードは次のようになります。

posts = page.xpath("//div[@id='posts']/div[@align='center']") 
for post in posts: 
    print post.xpath(".//table/tr[1]/td[2]/a/@href") 
+0

ああ、右!私はこれを完全に忘れてしまった!どうもありがとう! – Difender