2015-10-06 57 views
1

我有一個<BODY>內這段HTML代碼,我試圖用scrapy選擇:HTML的Xpath查詢 - 我做錯了什麼?

<section class="content"> 
    <div class="social clearfix"> 
     <div class="profile profile-nano pull-left"> 
      <a href="https://xxx" title="xxx"> <img src="/xxx" class="avatar" height="48" width="48" title="xxx" alt="xxx"> </a> 
     </div> 
     <p class="byline pull-left text-left"><strong>BY <a class="text-uppercase" href="https://xxx">xxx</a><br /> 
      September 07, 2015</strong> </p> 

這是XPath選擇我使用來獲得日期:

response.selector.xpath('//p/@byline/text()') 

哪返回空結果。

我在xpath選擇器中做錯了什麼?因爲在這裏你基本上是試圖從一個p元素和提供p元素的byline屬性沒有byline屬性

回答

2

//p/@byline/text()將匹配什麼。

你可以得到a元以下同級的有bylinediv的元素:

In [1]: response.xpath("//p[contains(@class, 'byline')]//a/following-sibling::text()").extract()[0].strip() 
Out[1]: u'September 07, 2015' 

或者,您可以從相應的p元素得到所有的文本節點,並通過篩選出所需的一個通過re:test() function以正則表達式模式檢查它:

In [2]: response.xpath("//p[contains(@class, 'byline')]//text()[re:test(., '\w+ \d{2}, \d{4}')]").extract()[0].strip() 
Out[2]: u'September 07, 2015'