Đâ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!
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