2012-12-25 47 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