1

Scrapy を使用してサイトをクロールしていますが、Web サイトのブログ投稿 (つまり、ページではない) のみをクロールするように設定する方法があるかどうか疑問に思っています。サイトごとに特定のルールを作成して機能させることもできますが、複数のサイトをクロールする必要がある場合は時間がかかりすぎます。ブログ投稿のみを取得するために、すべてのサイトで普遍的に機能する 1 つのクローラーを用意する方法はありますか? 私はそれを疑っていますが、私の指が交差している天才がこれに対する答えを持っています.

これまでに Scrapy のドキュメントから取得した基本的なコードを次に示します。これを機能させるには何を追加する必要がありますか?

from scrapy.contrib.spiders import CrawlSpider

class MySpider(CrawlSpider):
    name = 'crawlit'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com']

    def parse_item(self, response):
        #do something

PS RSS フィードだけを取得することも考えましたが、RSS フィードには最近の投稿しか表示されません。つまり、特定の日付より古い投稿を取得することはできません。誰かがそれを回避する方法を知らない限り?

4

1 に答える 1

0

python-readability のようなライブラリを使用して、特定の URL からすべての記事テキストを抽出し、「ブログ投稿」として認定することができます。

from readability.readability import Document

def parse_url(self, response):
    html = response.body
    readable_article = Document(html).summary()
    readable_title = Document(html).short_title()

Web サイトの記事だけが必要な場合は、そのサイトに RSS フィードがあるかどうかを確認する価値があるでしょうか?

于 2013-05-26T15:10:58.173 に答える