2012-12-25 96 views
6

我是新來Scrapy和我所要做的是使履帶這隻會跟隨在給定start_urls如何告訴Scrapy只抓取Xpath中的鏈接?

HTML元素只是作爲一個例子可以說我只想要一個履帶式走線槽中的鏈接在製作的Airbnb房源已經start_urls設置爲https://www.airbnb.com/s?location=New+York%2C+NY&checkin=&checkout=&guests=1

,而不是在URL抓取所有的鏈接我只想抓取的XPath //*[@id="results"]

目前我使用下面的代碼抓取所有環節的內部鏈接,怎麼能我只適應它爬行//*[@id="results"]

from scrapy.selector import HtmlXPathSelector 
    from tutorial.items import DmozItem 
    from scrapy.contrib.spiders import CrawlSpider, Rule 
    from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
    from scrapy.selector import HtmlXPathSelector 


    class BSpider(CrawlSpider): 
      name = "bt" 
      #follow = True 
      allowed_domains = ["mydomain.com"] 
      start_urls = ["http://myurl.com/path"] 
      rules =(Rule(SgmlLinkExtractor(allow =()) ,callback = 'parse_item', follow=True),) 


     def parse_item(self, response): 
     {parse code} 

任何小費在正確的方向將不勝感激, 謝謝!

回答

8

您可以將restrict_xpaths關鍵字參數傳遞給SgmlLinkExtractor。從the docs

  • restrict_xpaths(STR或列表) - 是一個的XPath(或XPath的列表),其定義了鏈接應當從待提取的響應內的區域。如果給定,只有那些XPath選擇的文本纔會被掃描以查找鏈接。
+0

謝謝!就是這樣,出於某種原因,我在搜索時找不到任何東西......很容易直接找到文檔。 – JordanBelf