1

私は正常に動作するスクレイピークローラーを持っています。「parse」関数を使用して、特定の URL を解析したいと考えています。コマンドを使用して単一のURLに対してこれを行うコマンドラインユーティリティが存在しますが:

scrapy parse <options> <url>

しかし、私は自分のpythonコード内でこれを行いたいです(そして、すべてのURLに対して新しいプロセスを開始することはオプションではありません)

これに必要なものは、基本的に、URLを指定してResponseを作成する方法です。Scrapy が受け取る応答は HTTPResponse と同じではないため、URL を指定してその応答を取得する方法がわかりません。

明らかなことを行うメソッドmake_reqests_from_urlを見つけましたが、解析関数に渡すことができるスクレイピーリクエストからスクレイピーレスポンスに取得する方法がわかりません。

4

2 に答える 2

0

OPの場合とは異なり、場合に備えて( hereおよびhereの部分を使用して)簡単なクラッジsubprocessがオプションです。

import subprocess
bashCommand = "Scrapy fetch http://www.testsite.com/testpage.html"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
page, scrapy_meta_info = process.communicate()
于 2013-05-26T19:03:49.337 に答える
0

それを理解することができました。

基本的に、応答オブジェクトを作成するには、応答本文、URL、およびスクレイピー リクエストを渡す必要がありました。

bs = BaseSpider('some')
head = 'www.mywebsite.com'
httpcon = httplib.HTTPConnection(head)
tail = '/mypage.html'
httpcon.request('GET',tail)
sreq = bs.make_requests_from_url(link)
sresp = TextResponse(url=link,status=200,body=httpcon.getresponse(),encoding='utf-8')
于 2012-10-14T13:18:26.887 に答える