1

私はスクレイピーに取り組んでいます

ハッシュタグを含めてスクレイピングするサイトがあったのですが、実行するとハッシュタグを無視してレスポンスをスクレイピーダウンロード

たとえば、これは の URL でhash fragmentsurl="www.example.com/hash-tag.php#user_id-654" このリクエストからの応答は のみwww.example.com/hash-tag.phpですが、ハッシュ フラグメントを使用して URL をスクレイピングしたいと考えています。

私のコードは以下です

 class ExampleSpider(BaseSpider):
     name = "example"
     domain_name = "www.example.com"


    def start_requests(self):
            return Request("www.example.com/hash-tag.php#user_id-654")    


    def parse(self):
           print response 

結果:

<GET www.example.com/hash-tag.php>

どうすればこれを行うことができますか......よろしくお願いします.......

4

2 に答える 2

0

あなたがやろうとしていることは、簡単には実現できません。必要なものを実現するには、完全な DOM と JavaScript エンジン、つまり (おそらくヘッドレス) ブラウザーが必要です。

本当に必要な場合は、PhantomJSをご覧ください。これは WebKit エンジンですが、完全にヘッドレスです。Scrapy を簡単に拡張できるかどうかはわかりませんが、本当に JavaScript を実行したい場合 (この場合はこれが必要です)、PhantomJS を使用するのがおそらく最善の方法です。

于 2012-06-18T10:17:14.050 に答える
0

その情報が本当に必要な場合は、Request を呼び出す前に文字列を分割し、その情報をメタとして送信できます。

何かのようなもの

url = "www.example.com/hash-tag.php#user_id-654"
hash = url.split("#")[1]

request = Request(url, callback=self.parse_something)
request.meta['after_hash'] = hash
yield request

そして、解析で取得して使用します

def parse_something(self, response):
     hash = response.meta['after_hash']

これは、ハッシュ記号の後にのみその情報が必要な場合です。

于 2012-06-18T12:27:23.833 に答える