問題タブ [scrapy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5570 参照

python - Python Scrapy 、アイテムのパイプラインを定義する方法は?

私はアイテムを持っているサイトごとに異なるサイトをクロールするためにスクレイピーを使用しています(異なる情報が抽​​出されます)

たとえば、一般的なパイプラインがあります (ほとんどの情報は同じです) が、Google 検索の応答をクロールしていて、パイプラインが異なる必要があります。

例えば:

GenericItem用途GenericPipeline

しかし、GoogleItem使用しますGoogleItemPipelineが、スパイダーがクロールしているときは、GenericPipeline代わりに使用しようとしますGoogleItemPipeline....Googleスパイダーが使用する必要があるパイプラインを指定するにはどうすればよいですか?

0 投票する
2 に答える
513 参照

optimization - クローラーの状態を保存する最も最適な方法は?

現在、Web クローラーを作成しています (Python フレームワークのScrapyを使用)。
最近、一時停止/再開システムを実装する必要がありました。
私が実装したソリューションは最も単純なもので、基本的には、リンクがスケジュールされたときにリンクを保存し、実際にリンクが「処理済み」としてマークされます。
したがって、スパイダーを再開するときにこれらのリンクを取得できます (明らかに、URL、深さの値、リンクが属するドメインなどよりも少し多くの情報が保存されています...)。これまでのところ、すべてがうまく機能しています。

現在、私は mysql テーブルを使用してこれらのストレージ アクションを処理しており、主に高速なプロトタイピングを目的としています。

ここで利用できるオプションはデータベースだけではないと思うので、これを最適化する方法を知りたいと思います。最適化とは、非常にシンプルで軽量なシステムを使用しながら、短時間で書き込まれた大量のデータを処理できることを意味します

今のところ、数十のドメインのクロールを処理できるはずです。つまり、1 秒間に数千のリンクを保存することになります...

提案を事前にありがとう

0 投票する
1 に答える
1647 参照

twisted - Scrapyスパイダーのツイストエラー

Scrapyチュートリアルからスパイダーを実行すると、次のエラーメッセージが表示されます。

--- <exception caught here>---

誰かが彼らが何であるか、そして私がそれらをどのように取り除くことができるか知っていますか?

ありがとう

0 投票する
4 に答える
3842 参照

python - Scrapy pipeline.py に関する初心者 Q

Scrapy チュートリアルを勉強しています。プロセスをテストするために、次のファイルを使用して新しいプロジェクトを作成しました。

スクリプトへのリンクについては、Scrapy グループの私の投稿を参照してください。ここに複数のリンクを投稿することはできません。

スパイダーはうまく動作し、タイトル タグ間のテキストをスクレイピングして FirmItem に配置します。

しかし、私はパイプラインプロセスで立ち往生しています。この FirmItem を csv ファイルに追加して、データベースに追加できるようにしたいと考えています。

私はPythonを初めて使用し、学習しながら学んでいます。スクレイピングされたデータが items.csv に入れられるように、pipelines.py を機能させる方法について誰かが私に手がかりを与えてくれたら幸いです。

ありがとうございました。

0 投票する
2 に答える
666 参照

python - スパイダーのScrapydomain_name

Scrapyチュートリアルから:

domain_name:スパイダーを識別します。一意である必要があります。つまり、異なるスパイダーに同じドメイン名を設定することはできません。

domain_nameこれは、次のような有効なドメイン名である必要があることを意味しますか?

domain_name ='example.com'

または私は名前を付けることができます

問題は、ドメイン名で動作するスパイダーがあったことです

ここで、CrawlSpiderのインスタンスとして新しいスパイダーを作成し、名前を付けました

しかし、私はエラーが発生しています"could not find spider for domain "wc2""

0 投票する
3 に答える
2743 参照

python - Scrapy スパイダー インデックス エラー

これは、Scrapy フレームワーク内で記述しようとしている Spyder1 のコードです。

の正規表現はrules、開始 URL から必要なすべてのバイオ URL を正常に取得します。

しかし、コードを実行すると、

これは Items.py の FirmItem です

インデックスエラーが発生する場所を理解するのを手伝ってもらえますか?

SgmLinkExtractorと関係があるようです。

私は、このスパイダーを Scrapy で何週間も機能させようと試みてきました。彼らには優れたチュートリアルがありますが、私はPythonとWebプログラミングに慣れていないので、たとえばSgmlLinkExtractor舞台裏でどのように機能するかわかりません.

Python ライブラリを使用して、同じ単純な機能を持つスパイダーを作成する方が簡単でしょうか? コメントや助けをいただければ幸いです。

ありがとう

0 投票する
2 に答える
10685 参照

python - Python で簡単なスパイダーを作成するには?

私はこのスパイダーを何週間も書き込もうとしましたが、成功しませんでした。これを Python でコーディングする最良の方法は次のとおりです。

1) 初期 URL:http://www.whitecase.com/Attorneys/List.aspx?LastName=A

2) 最初の URL から、次の正規表現を使用してこれらの URL を取得します。

hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+')

3) これらの各 URL にアクセスし、この正規表現を使用して学校の情報をスクレイピングします。

hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)'

[u'JD, ', u'University of Florida Levin College of Law, <em>magna cum laude</em> , Order of the Coif, Symposium Editor, Florida Law Review, Awards for highest grades in Comparative Constitutional History, Legal Drafting, Real Property and Sales, ', u'2007']

4) スクレイピングされた学校情報をschools.csvファイルに書き込みます

このスパイダーを Python で書くのを手伝ってくれませんか? Scrapy で書き込もうとしましたが、成功しませんでした。私の前の質問を参照してください。

ありがとうございました。

0 投票する
1 に答える
5685 参照

python - Scrapy BaseSpider: どのように機能しますか?

これは、Scrapy チュートリアルの BaseSpider の例です。

プロジェクトの変更を加えてコピーしました:

エラーが発生します

ここの専門家がコードを見て、私が間違っている場所についての手がかりを教えてくれれば、非常にありがたいです。

ありがとうございました

0 投票する
5 に答える
5375 参照

python - Scrapy Spider が動作していません

これまでのところ何も機能していないので、新しいプロジェクトを開始しました

チュートリアルに正確に従い、フォルダーと新しいスパイダーを作成しました

そして私が走るとき

私は得る

少なくとも他のスパイダーは Scrapy によって認識されますが、これは認識されません。私は何を間違っていますか?

ご協力いただきありがとうございます!

0 投票する
4 に答える
8547 参照

python - Scrapy SgmlLinkExtractor の質問

SgmlLinkExtractor を機能させようとしています。

これは署名です:

私はちょうど使用していますallow=()

だから、私は入ります

したがって、最初の URL は'http://www.whitecase.com/jacevedo/'であり、入力しており、それもスキャンされることallow=('/aadler',)を期待し ています。'/aadler/'しかし代わりに、スパイダーは最初の URL をスキャンしてから閉じます。

ここで何が間違っていますか?

このクモを完成させるのを手伝ってくれる、Scrapy をうまく使った人はここにいますか?

お手伝いありがとう。

以下にスパイダーのコードを含めます。

注: SO では複数の URL を投稿することはできないため、必要に応じて最初の URL を置き換えてください。申し訳ありません。