2013-12-09 12 views
7

Tạo scraper cho nhóm tưởng tượng. Tìm cách chuyển danh sách tên người chơi làm đối số và sau đó cho mỗi player_name trong player_list hãy chạy mã phân tích cú pháp.Phế liệu: Làm cách nào để chuyển danh sách các đối số thông qua dấu nhắc lệnh tới con nhện?

Tôi hiện đang có một cái gì đó như thế này

class statsspider(BaseSpider): 
name = 'statsspider' 

def __init__ (self, domain=None, player_list=""): 
    self.allowed_domains = ['sports.yahoo.com'] 
    self.start_urls = [ 
     'http://sports.yahoo.com/nba/players', 
    ] 
    self.player_list= "%s" % player_list 


def parse(self, response): 
    example code 
    yield request 

Tôi giả định bước vào một danh sách các đối số là giống như chỉ là một lập luận thông qua các dòng lệnh vì vậy tôi nhập một cái gì đó như thế này:

scrapy crawl statsspider -a player_list=['xyz','abc'] 

Bài 2!

Giải quyết được vấn đề đầu tiên bằng cách nhập một dấu phẩy phân cách danh sách các đối số như vậy

scrapy crawl statsspider -a player_list="abc def,ghi jkl" 

Tôi bây giờ muốn đi qua mỗi "tên" (tức là 'abc def') để tìm ra đầu tiên ban đầu của họ họ (trong trường hợp này là 'd').

tôi sử dụng mã

array = [] 
for player_name in self.player_list: 
    array.append(player_name) 
print array 

Và tôi kết thúc với kết quả [[ "'", 'a', 'b', 'c', ... vv]] Tại sao trăn không gán player_name cho mỗi 'tên' (ví dụ 'abc def' và 'write jkl')? ai đó có thể giải thích logic này cho tôi, và tôi có lẽ sẽ hiểu đúng cách để làm điều đó sau đó!

+0

chỉ cho nó một thử, nó không cung cấp cho các lỗi trên Ubuntu, scrapy phiên bản 0.18.4, những phiên bản bạn có đang chạy ? –

+0

Tôi nhận ra mình đã vượt qua sai số arg thông qua dòng lệnh. Xem câu trả lời @kev dưới đây! Nhưng bây giờ tôi đang mắc kẹt với một vấn đề mới –

Trả lời

12

Đối số Shell dựa trên chuỗi. Bạn cần phân tích cú pháp arg trong mã của bạn.

dòng

lệnh:

scrapy crawl statsspider -a player_list=xyz,abc 

mã python:

self.player_list = player_list.split(',') 
+0

Hey @kev cảm ơn bạn đã trả lời! Bây giờ tôi biết cách chuyển danh sách vào dòng lệnh. Nó hoạt động, nhưng bây giờ tôi có một vấn đề mới liên quan đến tôi không hiểu logic của python. Nếu bạn có thể thấy "Bài 2" được thêm vào sẽ được đánh giá cao! –

+0

Nevermind đã giải quyết được vấn đề! –

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