2017-11-21 4 views
0

Im新しくDjangoに新しく追加されました。私はチュートリアルを実行していて、自分自身のものから始めることに決めましたし、最善の方法について少し助言が必要です。BeautifulSoupを使用したdjangoデータベースのアップデート

私はpostgreSQLテーブルに格納された小さなURLのリストを実行し、Beautiful Soupを使用して各URLページからデータを抽出し、それをレコードと比較して保存する単純なサイトを作成しています

Iveはモデルと関連クラスのlistviewを設定して表示します。美しいスープ部分を走り回って、各サイトのデータを実際に走り回り、 "掻く"場所を物理的に入れなければならないのか疑問に思っていましたか?

クラスビューが呼び出されたときに呼び出されるべきものでしょうか? Model Managerのようなもの?ちょうど特注の機能か何か?可能であれば、Ajaxを使用してこのデータを更新したいので、それに合わせる必要があります。

うまくいけばそれほどあいまいではありません。文字通り単なるモデルであり、クラスListViewですが、有益であると感じたら、私が持っているものを投稿することは幸いです。

ありがとうございます!

答えて

2

ビューではスクラップをしないでください。スクレイピングが発生している間はページが読み込まれないので、ユーザーを混乱させる可能性があります。ユーザーはページを更新して、コードを2回実行させることもできます。さらに、プロジェクト用にインストールするプロキシの多くにタイムアウトが発生することがあります。

これはバックグラウンドプロセスの仕事の種類です。これを行う最も簡単な方法はcustom admin commandです。 management/commandsの下にscrape.pyというファイルを作成します。 __init__.pyを忘れないでください。

polls/ 
    __init__.py 
    models.py 
    management/ 
     __init__.py 
     commands/ 
      __init__.py 
      scrape.py 
    tests.py 
    views.py 

そのファイルの使用では:あなたはおそらくでそれを設定したい

python manage.py scrape 

from django.core.management.base import BaseCommand, CommandError 

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     self.stdout.write(self.style.SUCCESS('I am a scraper!')) 

が最後にあなたの新しいコマンドを実行することを忘れないでくださいたとえば、 cronジョブ。

さらに複雑な使用例については、Celeryを参照してください。

+0

完璧な、それは試してみてください。迅速な対応kichikありがとう。 – BegaMucks

関連する問題