2012-08-31 10 views
8

Đây là một bài đăng khá dài, nhưng sau khi thực hiện nghiên cứu sâu rộng, tôi không thể tìm thấy giải pháp. Tôi có một dự án hỗn hợp Django 1.4.1/Scrapy 0.14.4 trên OSX 10.8 và tôi điều khiển Scrapy với lệnh manage.py của dự án Django như được mô tả here. Ví dụ: gọi số điện thoạiKhông thể nhập mô-đun cài đặt của Scrapy hoặc scrapy.cfg

python manage.py scrapy crawl example_spider 

hoạt động không có vấn đề gì. Bây giờ tôi đang ở thời điểm mà tôi muốn thiết lập dịch vụ web scrapyd để triển khai trình thu thập thông tin của tôi. Tuy nhiên, khi tôi thực hiện

python manage.py scrapy server 

sau đó tôi nhận được ngoại lệ này:

scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir 

Vì vậy, rõ ràng Scrapy không thể tìm thấy các tập tin scrapy.cfg bởi vì tôi không thực hiện nó từ bên trong dự án Scrapy. Các Scrapy khác ra lệnh cho công việc, tuy nhiên, vì trong dự án Django của tôi settings.py tôi đã làm như sau:

sys.path.append('/absolute/path/to/my/Scrapy/project') 
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings' 

Câu hỏi 1: Tại sao không thể Scrapy phát hiện các tập tin scrapy.cfg trong thiết lập của tôi? Làm cách nào tôi có thể giải quyết vấn đề này?


Kể từ những thứ nêu trên không làm việc, tôi đã cố gắng để có được những scrapyd máy chủ đang chạy chỉ bằng lệnh scrapy từ bên trong thư mục dự án Scrapy tôi. Thực hiện scrapy server từ thư mục cấp cao nhất của dự án Scrapy tôi mang lại như sau:

$ scrapy server 
UserWarning: Cannot import scrapy settings module my_scrapy_project_name.settings 
warnings.warn("Cannot import scrapy settings module %s" % scrapy_module) 
2012-08-31 21:58:31+0200 [-] Log opened. 
2012-08-31 21:58:32+0200 [-] Scrapyd web console available at http://localhost:6800/ 
2012-08-31 21:58:32+0200 [Launcher] Scrapyd started: max_proc=8, runner='scrapyd.runner' 
2012-08-31 21:58:32+0200 [-] Site starting on 6800 
2012-08-31 21:58:32+0200 [-] Starting factory <twisted.web.server.Site instance at 0x101dd3d88> 

Các máy chủ đang chạy mà không có một vấn đề, tuy nhiên, các tập tin settings.py của dự án Scrapy của tôi có thể không được tìm thấy bởi vì các biến môi trường tương ứng không phải là đặt nữa. Đó là lý do tại sao tôi làm như sau trong thiết bị đầu cuối của tôi:

export PYTHONPATH=/absolute/path/to/my/Scrapy/project 
export SCRAPY_SETTINGS_MODULE=my_scrapy_project_name.settings 

Thật không may, hai lệnh này không có hiệu lực. Bất cứ khi nào tôi thực thi scrapy server (hoặc bất kỳ lệnh Scrapy nào khác), tôi nhận được thông báo rằng Scrapy không thể nhập mô-đun cài đặt của dự án.

My scrapy.cfg chỉ có nội dung sau đây vào lúc này:

[settings] 
default = my_scrapy_project_name.settings 

[deploy:scrapyd] 
url = http://localhost:6800/ 
project = my_scrapy_project_name 

Khi tôi cố gắng để triển khai dự án Scrapy tôi đến máy chủ scrapyd, có vẻ như để làm việc lúc đầu, nhưng sau đó tôi nhận ra rằng không ai trong số các nhện đã được tải lên, có thể do không thể phát hiện tệp cài đặt. Đây là giao diện điều khiển đầu ra:

$ scrapy deploy scrapyd -p my_scrapy_project_name 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/scrapy/utils/project.py:17: UserWarning: Cannot import scrapy 
settings module my_scrapy_project_name.settings 
warnings.warn("Cannot import scrapy settings module %s" % 
scrapy_module) 
Building egg of event_crawler-1346531706 
'build/lib' does not exist -- can't clean it 
'build/bdist.macosx-10.6-intel' does not exist -- can't clean it 
'build/scripts-2.7' does not exist -- can't clean it 
zip_safe flag not set; analyzing archive contents... 
Deploying event_crawler-1346531706 to http://localhost:6800/addversion.json 
Server response (200): 
{"status": "ok", "project": "my_scrapy_project_name", "version": "1346531706", "spiders": 0} 

Câu hỏi 2: Làm thế nào để làm việc xuất khẩu đúng của biến đường dẫn và môi trường trên để cảnh báo này sẽ biến mất?

Câu hỏi 3: Vì máy chủ scrapyd có vẻ hoạt động tốt, làm cách nào để tải lên trình thu thập thông tin chính xác?

Rất cám ơn trước!

Trả lời

2

có 3 liên kết bên trong wiki of scrapy:

the first onesecond one đều giải quyết các vấn đề với django và scrapy cài đặt mâu thuẫn.

hy vọng điều này giúp ...

thậm chí this question trên SO giải quyết rất nhiều các thiết lập-vấn đề giữa django và scrapy

+1

Cảm ơn bạn đã chỉ cho tôi vào wiki. Tôi đã không nhận thức được thực tế là có một wiki cộng đồng trên trang github của Scrapy. [Hướng dẫn này] (http://www.sammyliu.com/2012/06/22/tutorial-scrapy-and-django) đã cho tôi manh mối quan trọng: Tôi không chỉ phải di chuyển tệp 'scrapy.cfg' đến thư mục dự án Django trên cùng nhưng cũng toàn bộ thư mục dự án Scrapy. Bây giờ nhện của tôi có thể được tải lên một cách chính xác vào máy chủ Scrapyd và tất cả các biến môi trường đều được nhận diện. Vì vậy, kể từ khi bạn chỉ cho tôi đúng hướng, tôi trao cho bạn tiền thưởng. Besten Dank, Ralf. :) – pemistahl

2

Nếu bạn nhìn vào code branch that raises this exceptiondefinition of the closest_scrapy_cfg function mà nó gọi, nơi duy nhất scrapy đang tìm kiếm scrapy.cfg của bạn là trong thư mục bạn chạy lệnh từ và bất kỳ thư mục cha mẹ. Bạn có thể chạy os.chdir trong manage.py của bạn hoặc di chuyển scrapy.cfg của bạn sang thư mục bạn đang chạy.

+0

Tôi đã cố di chuyển tệp 'scrapy.cfg' sang cùng thư mục chứa tệp' manage.py'. Nó hoạt động, nhưng vấn đề mà không có nhện nào của tôi được tải lên máy chủ vẫn tồn tại. Việc xuất các biến môi trường không hoạt động. – pemistahl

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