9

クッキングと Java スクリプトを有効にする必要がある Scrapy を使用して Web サイトをスクレイピングしています。実際にJavaScriptを処理する必要はないと思います。必要なのは、JavaScript が有効になっているかのように振る舞うことだけです。

これが私が試したことです:1)設定で次のようにしてCookieを有効にします

COOKIES_ENABLED = True
COOKIES_DEBUG = True

2) クッキーのダウンロードミドルウェアの利用

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 400,
    'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware':700
}

3) 'X-JAVASCRIPT-ENABLED' の送信: 'True'

DEFAULT_REQUEST_HEADERS={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'X-JAVASCRIPT-ENABLED': 'True'
}

しかし、誰も私と一緒に働いていません。アイデアを提案したり、方向性を教えてください。

返信ありがとうございます。

4

3 に答える 3

6

ScrapyjsでSplash JS エンジンを試す必要があります。スパイダー プロジェクトで設定する方法の例を次に示します。

SPLASH_URL = 'http://192.168.59.103:8050'
DOWNLOADER_MIDDLEWARES = {
    'scrapyjs.SplashMiddleware': 725,
}

Scrapy の背後にある同じ会社であるスクレイピング ハブには、スプラッシュを有効にしてスパイダーを実行するための特別なインスタンスがあります。

SplashRequest次に、次のようにスパイダーの代わりに譲りRequestます。

import scrapy
from scrapy_splash import SplashRequest

class MySpider(scrapy.Spider):
    start_urls = ["http://example.com", "http://example.com/foo"]

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url, self.parse,
                endpoint='render.html',
                args={'wait': 0.5},
            )

    def parse(self, response):
        # response.body is a result of render.html call; it
        # contains HTML processed by a browser.
        # …
于 2015-08-21T19:12:13.183 に答える
4

私の知る限り、普遍的な解決策はありません。Javascript がクライアントでサポートされていない/有効になっていないことをどのように判断するかを確認するには、サイトをデバッグする必要があります。

X-JAVASCRIPT-ENABLEDサーバーがヘッダーを見ていないと思います。ページが実際の JavaScript 対応ブラウザにロードされたときに、Javascript によって設定された Cookie があるのではないでしょうか? 多分サーバーはuser-agentヘッダーを見ますか?

こちらの回答もご覧ください。

于 2013-05-07T06:04:25.963 に答える
1

Scrapy は Java スクリプトをサポートしていません。

しかし

Webkit、Selenium などの JS を実行するために、Scrapy で他のライブラリを使用できます。

また、Cookie ( ) を有効にする必要はなく、デフォルトのスクレイピー設定で既に利用可能であるため、COOKIES_ENABLED = True追加する必要さえありませんDOWNLOADER_MIDDLEWARESsettings.py

于 2013-05-06T13:08:06.240 に答える