2014-02-12 43 views
0

我對Scrapy相當陌生,所以請耐心等待一會兒。在shell下找不到正確的xpath

我想刮this page以下信息

  • 項目的縮寫(PROTECTRAIL)
  • 項目簡要說明(鐵路,工業夥伴關係鐵路運輸的集成安全性)
  • 項目長描述(面對增強建築物和基礎設施保護的問題)

使用谷歌刮刀我有看點ED這些元素和測定它們的Xpath在html頁面

  • 縮寫://*[@id='recorddetails']/div/div[1]/h1
  • 簡短描述://*[@id='recorddetails']/div/div[1]/h2
  • 長說明://*[@id='recorddetails']/div/div[4]/div[2]/div[1]/p/text()

我已經然後測試SHELL在以下Xpath查詢

  • 縮寫:sel.xpath("//*[@id='recorddetails']/div/div[1]/h1").extract()
  • 簡短描述:sel.xpath("//*[@id='recorddetails']/div/div[1]/h2")
  • 長的描述:sel.xpath("//*[@id='recorddetails']/div/div[4]/div[2]/div[1]/p/text()").extract()

但是外殼的產量沒有結果[]對這些不同的XPath查詢,而他們似乎是正確寫入(沒有語法錯誤),並不夠準確。

如何找到正確的選擇器與適當的Xpath以獲取這些信息?

回答

1

看螢火網絡選項卡,通過XHR請求過濾器,它似乎是你所追求的數據是在後面的AJAX調用:

$ scrapy shell "http://cordis.europa.eu/projects/index.cfm?fuseaction=app.csa&action=read&xslt-template=projects/xsl/projectdet_en.xslt&rcn=95607" 
.... 
>>> sel.xpath("//div[@class='projttl']/h1/text()").extract() 
[u'PROTECTRAIL'] 

也,更好地使自己熟悉XPath語法,而不是使用那些自動xpath工具

+0

感謝您的幫助!但是,我如何從原始網址到一個AJAX呼叫? – user3301871

+0

你有安裝螢火蟲嗎?它的Firefox擴展,比鉻的IMO更好,正如答案中所說的那樣,當它打開時,去XHR的Net標籤和過濾器,你會看到那裏的電話 –

+0

好的,我只需重新加載頁面,以便查看AJAX調用的位置。我想我會在將這些網址提供給蜘蛛之前用這些網址替換所有的原始網址。還是要謝謝你的幫助 ! – user3301871