1

私は Scrapy を使用するのは初めてで、Python 言語についてはほとんど知りません。これまでのところ、Scrapy をインストールし、いくつかのチュートリアルを実行しました。その後、多くのサイトで同じデータを検索する方法を見つけようとしています。私の目標は、Scrapy を使用して「投稿」へのリンクといくつかの検索基準へのリンクを見つけることです。例として、サイトA、B、Cを検索したいと思います。各サイトで、アプリ名X、Y、Zに関する「投稿」があるかどうかを確認したいと思います。 X、Y、Z。その投稿へのリンクを取得してほしい。もっと簡単にできるとしたら... 各投稿をスキャンして会社名を見つけることができます。X、Y、Z の代わりに、[会社名の例] の各「投稿」の内容を検索します。私がこのようにしている理由は、作成されたJSONに「投稿」へのリンクだけがあるようにするためです

私は Ubuntu 10.12 を使用しており、必要なサイトをスクレイピングできましたが、JSON を必要な情報に絞り込むことができませんでした。そのため、現在も何百ものリンクを通過する必要がありますが、これを回避したかったのです。非常に多くのリンクが得られる理由は、私が見つけたすべてのチュートリアルが特定の HTML タグをスクレイピングするためのものだからです。タグを検索して、アプリのタイトルまたはパッケージ名の一部が含まれているかどうかを確認します。

このように、投稿情報が表示されますが、json からリンクを選択する必要があります。時間は節約できますが、それでも私たちが望んでいるものではありません。その一部は、私がそれを正しく参照または呼び出していないことだと思います。できる限りのお手伝いをお願いします。私はこれを理解しようと何時間も費やしました。

posts = hxs.select("//div[@class='post']")
        items = []
        for post in posts:
            item = ScrapySampleItem()
            item["title"] = post.select("div[@class='bodytext']/h2/a/text()").extract()
            item["link"] = post.select("div[@class='bodytext']/h2/a/@href").extract()
            item["content"] = post.select("div[@class='bodytext']/p/text()").extract()
            items.append(item)
        for item in items:
            yield item

これを使用して、Android アプリの著作権侵害を減らしたいと考えています。これを外に出して、必要な著作権侵害サイトを検索することができれば、削除したいすべてのリンクをサイトまたはホスティング会社にメールで送信できます. 著作権法の下では、彼らは従う必要がありますが、彼らが侵害するすべての「投稿」にリンクすることを要求しているため、アプリ開発者は通常、この種のものをいじりません. 何百ものアプリがあるため、アプリへのリンクを見つけるのに何時間もかかります。

事前に提供できるご協力に感謝します。長い目で見れば、あなたは多くのアプリ開発者を助けることになります!

グラディ

4

1 に答える 1

0

XPath セレクターは絶対です。それらは、前のセレクター ( .)に対して相対的でなければなりません。

posts = hxs.select('//div[@class='post']')

for post in posts:
    item = ScrapySampleItem()
    item['title'] = post.select('.//div[@class="bodytext"]/h2/a/text()').extract()
    item['link'] = post.select('.//div[@class="bodytext"]/h2/a/@href').extract()
    item['content'] = post.select('.//div[@class="bodytext"]/p/text()').extract()

    yield item
于 2013-03-17T04:56:13.477 に答える