問題タブ [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.
python - Scrapy make_requests_from_url(url)
Scrapy チュートリアルには、BaseSpider の次のメソッドがあります。
URL を受け取り、スクレイピングする Request オブジェクト (または Request オブジェクトのリスト) を返すメソッド。
このメソッドは、start_requests() メソッドで最初のリクエストを作成するために使用され、通常は URL をリクエストに変換するために使用されます。
オーバーライドされない限り、このメソッドはコールバック関数として parse() メソッドを使用し、dont_filter パラメーターを有効にしてリクエストを返します (詳細については、リクエスト クラスを参照してください)。
このメソッドが何をするのか理解できますか? また、機能しない SgmlLinkExtractor と CrawlSpider の代わりに、makerequestsfrom_url と BaseSpider を使用できますか?
指定された初期 URL 以外をクロールしようとしていますが、Scrapy はそれを行っていません。
ありがとう
python - Scrapy SgmlLinkExtractor は許可されたリンクを無視しています
Scrapy ドキュメントのこのスパイダーの例を見てください。説明は次のとおりです。
このスパイダーは example.com のホームページのクロールを開始し、カテゴリ リンクとアイテム リンクを収集し、後者を parse_item メソッドで解析します。アイテムの応答ごとに、XPath を使用して HTML から一部のデータが抽出され、アイテムにそのデータが入力されます。
同じスパイダーを正確にコピーし、「example.com」を別の初期 URL に置き換えました。
しかし、私のスパイダー "stb" は "/bios/" からのリンクを本来のように収集しません。最初の URL を実行し、スクレイピングitem['JD']
してファイルに書き込み、終了します。
SgmlLinkExtractor
無視されているのはなぜですか?が読み取られるのは、行内Rule
の構文エラーをキャッチするためです。Rule
これはバグですか?私のコードに何か問題がありますか?実行ごとに表示される未処理のエラーを除いて、エラーはありません。
ここで私が間違っていることを知っておくといいでしょう。手がかりをありがとう。私は何をすべきか誤解しSgmlLinkExtractor
ていますか?
python - Scrapy を使用して期限切れのアイテムをデータベースから削除する方法
コンテンツの有効期限が頻繁に切れるビデオ サイトをスパイダーで使用しています。スクレイピーを使用してスパイダリングを行うことを検討し ていますが、期限切れのアイテムを削除する方法がわかりません。
アイテムの有効期限が切れているかどうかを検出する方法は次のとおりです。
- サイトの「delete.rss」をスパイダーします。
- 数日おきに、コンテンツ ページを再読み込みして、まだ機能することを確認してください。
- サイトのコンテンツ インデックスのすべてのページをスパイダーし、動画が見つからない場合は削除します。
スクレイピーで期限切れのアイテムを削除する方法を教えてください。djangoを介してmysql DBにスクレイピーアイテムを保存します。
2010-01-18 更新
機能するソリューションを見つけましたが、それでも最適ではない可能性があります。同期するすべてのビデオで「found_in_last_scan」フラグを維持しています。スパイダーが起動すると、すべてのフラグが False に設定されます。終了すると、フラグがまだ False に設定されているビデオを削除します。にアタッチしてこれを 行いました。これが有効な戦略であり、問題がないことを確認しsignals.spider_opened
てください。signals.spider_closed
python - Scrapy に基づいて永続的に実行する Web クローラーを構築する方法は?
Scrapy に基づいて Web クローラーを構築し、複数のニュース ポータル Web サイトからニュース画像を取得したいと考えています。このクローラーを次のようにしたい:
永久に実行
更新を取得するために、定期的にいくつかのポータル ページに再アクセスすることを意味します。
スケジュールの優先順位。
URL の種類ごとに異なる優先順位を付けます。
マルチスレッドフェッチ
Scrapy のドキュメントを読みましたが、リストした内容に関連するものは見つかりませんでした (十分に注意していない可能性があります)。その方法を知っている人はいますか?または、それについてのアイデア/例を挙げてください。ありがとう!
python - Scrapy インストール: $PATH に受け入れ可能な C コンパイラが見つかりません
Scrapyを Mac OS X 10.6.2 マシンにインストールしようとしています...依存モジュールの 1 つをビルドしようとすると ( libxml2 )
次のエラーが表示されます。
gcc コンパイラが必要だと思います... 10.6 にインストールするのは簡単ですか? Pythonでモジュールをインストールするこのようにハングアップしないように、インストールする必要のあるパッケージはありますか?
python - 複数の Web サイトに 1 つの Scrapy スパイダーを使用する
ユーザーが構成可能な Web スパイダー/クローラーを作成する必要があり、Scrapy の使用を考えています。しかし、ドメインと許可された URL regex:es をハードコードすることはできません。代わりに、これは GUI で構成できます。
ドメインと許可された URL regex:es が動的に構成可能な Scrapy でスパイダーまたはスパイダーのセットを (できるだけ簡単に) 作成するにはどうすればよいですか? たとえば、構成をファイルに書き込むと、スパイダーはそれを何らかの方法で読み取ります。
javascript - ScrapyからCrawlSpiderを使用して、javascript onclickでリンクをクリックする方法は?
次のリンクに進むページが次のようになっているページをScrapyでクロールしたい:
Scrapyはそのjavascriptコードを解釈できますか?
livehttpheaders拡張機能を使用すると、[次へ]をクリックすると、次のように始まる非常に巨大な「ガベージ」を含むPOSTが生成されることがわかりました。
クラスでスパイダーを構築しようとしてCrawlSpider
いますが、コーディング方法がわかりません。このメソッドBaseSpider
を使用してparse()
、ログインフォームである最初のURLを処理し、POSTを実行しました。
次に、submit_next()を定義して、次に何をするかを指示しました。最初のURLでどのメソッドを使用するかをCrawlSpiderに伝える方法がわかりません。
最初のリクエストを除いて、クロール中のすべてのリクエストはPOSTリクエストです。データの貼り付けと、[次へ]をクリックして次のページに移動するという2種類のリクエストが交互に行われます。
python - BeautifulSoup でドキュメント DOCTYPE を取得する
BeautifulSoupと組み合わせてスクレイピーをいじり始めたばかりで、非常に明白な何かが欠けているのではないかと思っていますが、結果のスープ オブジェクトから返された html ドキュメントの doctype を取得する方法がわかりません。
次の html があるとします。
BeautifulSoupを使用して宣言されたdoctypeを抽出する方法があるかどうか誰か教えてもらえますか?
python - ドメインのリストのランディング ページのスクレイピング
ランディング ページ (index.html または同等のページ) をダウンロードしたい Web サイトのかなり長いリストがあります。私は現在、Scrapy を使用しています (その背後にいる人たちへの愛が溢れています。これは素晴らしいフレームワークです)。Scrapy は、この特定のタスクで私が望むよりも遅く、タスクがどれほど単純であるかを考えると、wget または他の代替手段がより高速になるかどうか疑問に思っています。何か案は?
(これが私が Scrapy で行っていることです。このタスクのために Scrapy を最適化するためにできることはありますか?)
だから、私は次のような開始URLリストを持っています
start_urls=[google.com yahoo.com aol.com]
そして、各応答からテキストをスクレイピングし、これを xml に保存します。複数のドメインを許可するには、オフサイトミドルウェアを無効にする必要があります。
Scrapy は期待どおりに動作しますが、遅いようです (1 時間に約 1000 または 4 秒ごとに 1)。単一のスパイダーの実行中に CONCURRENT_REQUESTS_PER_SPIDER の数を増やすことでこれを高速化する方法はありますか? 他に何か?