2012-12-25 22 views
6

Tôi mới sử dụng Scrapy và những gì tôi đang cố gắng làm là một trình thu thập dữ liệu sẽ chỉ theo các liên kết bên trong một phần tử HTML trên start_urlsLàm cách nào để tôi có thể yêu cầu Scrapy chỉ thu thập dữ liệu các liên kết bên trong một Xpath?

Ví dụ như cho phép nói rằng tôi chỉ muốn trình thu thập thông tin đi máng danh sách Airbnb đã start_urls thiết lập để https://www.airbnb.com/s?location=New+York%2C+NY&checkin=&checkout=&guests=1

Thay vì bò tất cả các link trong URL tôi chỉ muốn thu thập các liên kết bên trong xpath //*[@id="results"]

Hiện nay tôi đang sử dụng đoạn mã sau để thu thập tất cả các liên kết, làm thế nào có thể Tôi điều chỉnh nó để thu thập dữ liệu chỉ //*[@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} 

Bất kỳ mẹo nào đúng hướng sẽ được đánh giá cao, Cảm ơn!

Trả lời

8

Bạn có thể chuyển đối số từ khóa limits_xpaths tới SgmlLinkExtractor. Từ the docs:

  • restrict_xpaths (str hoặc danh sách) - là một XPath (hoặc danh sách các XPath của) trong đó xác định các khu vực bên trong phản ứng nơi liên kết nên được chiết xuất từ. Nếu được, chỉ có văn bản được chọn bởi những XPath đó sẽ được quét tìm liên kết.
+0

Cảm ơn! đó là vì lý do nào đó mà tôi không thể tìm thấy bất cứ điều gì khi tôi googled xung quanh ... nó rất dễ dàng để đi thẳng vào các tài liệu. – JordanBelf

Các vấn đề liên quan