2015-05-10 11 views
5

Tôi đang cố gắng viết chương trình trong Scrapy để mở liên kết và thu thập dữ liệu từ thẻ này: <p class="attrgroup"></p>.Làm cho Scrapy theo liên kết và thu thập dữ liệu

Tôi đã quản lý để làm cho Scrapy thu thập tất cả các liên kết từ URL đã cho nhưng không theo dõi chúng. Bất kỳ trợ giúp là rất đánh giá cao.

Trả lời

4

Bạn cần phải mang Request trường cho các liên kết để làm theo, gán một callback và trích xuất nội dung của p phần tử mong muốn trong callback:

# -*- coding: utf-8 -*- 
import scrapy 


# item class included here 
class DmozItem(scrapy.Item): 
    # define the fields for your item here like: 
    link = scrapy.Field() 
    attr = scrapy.Field() 


class DmozSpider(scrapy.Spider): 
    name = "dmoz" 
    allowed_domains = ["craigslist.org"] 
    start_urls = [ 
    "http://chicago.craigslist.org/search/emd?" 
    ] 

    BASE_URL = 'http://chicago.craigslist.org/' 

    def parse(self, response): 
     links = response.xpath('//a[@class="hdrlnk"]/@href').extract() 
     for link in links: 
      absolute_url = self.BASE_URL + link 
      yield scrapy.Request(absolute_url, callback=self.parse_attr) 

    def parse_attr(self, response): 
     item = DmozItem() 
     item["link"] = response.url 
     item["attr"] = "".join(response.xpath("//p[@class='attrgroup']//text()").extract()) 
     return item 
+0

Và làm thế nào tôi có thể lưu trữ dữ liệu thu thập được trong tập tin .csv cho thí dụ? Tôi đã thử điều này: crawl crawl dmoz -o items.csv -t csv nhưng tất cả những gì tôi nhận được là một tập tin rỗng. –

+0

@ArkanKalu chắc chắn, bạn cần phải trả về/trả lại các mục từ 'parse_attr()'. Đó chỉ là một mã ví dụ để bạn tiếp tục. – alecxe

+0

Bạn có thể viết ra dòng mã đó không? Xin lỗi vì đã làm phiền bạn, tôi là người mới bắt đầu trong lĩnh vực này: D –

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