2012-12-25 11 views
6

Jestem nowy Scrapy i co próbuję zrobić, to zrobić robota, który będzie tylko się linki wewnątrz elementu HTML na danym start_urlsJak mogę powiedzieć Scrapy, aby indeksował tylko linki wewnątrz Xpath?

Tylko jako przykład powiedzmy, że chcę tylko robot, aby przejść koryta aukcje Airbnb po start_urls ustawiony https://www.airbnb.com/s?location=New+York%2C+NY&checkin=&checkout=&guests=1

Zamiast indeksowania wszystkich linków w URL chcę po prostu indeksować linki wewnątrz XPath //*[@id="results"]

Obecnie używam następujący kod do indeksowania wszystkich linków, w jaki sposób Dostosowuję go do indeksowania tylko //*[@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} 

Każda wskazówka w dobrym kierunku zostanie doceniona, Dzięki!

Odpowiedz

8

Możesz przekazać argument słowa kluczowego restrict_xpaths do SgmlLinkExtractor. Od the docs:

  • restrict_xpaths (STR lub lista) - jest XPath (lub lista XPath użytkownika), które określa obszary wewnątrz odpowiedzi gdzie linki powinny być wyodrębnione z. Jeśli zostanie podany, tylko tekst wybrany przez XPath będzie skanowany pod kątem linków.
+0

Dzięki! to było to, z jakiegoś powodu nie mogłem znaleźć nic, kiedy szukałem w Google ... łatwo było przejść od razu do dokumentów. – JordanBelf

Powiązane problemy