以下のスクレイピーフレームワークは私の Spider.py コードです
class Example(BaseSpider):
name = "example"
allowed_domains = {"http://www.example.com"}
start_urls = [
"http://www.example.com/servlet/av/search&SiteName=page1"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
hrefs = hxs.select('//table[@class="knxa"]/tr/td/a/@href').extract()
# href consists of all href tags and i am copying in to forwarding_hrefs by making them as a string
forwarding_hrefs = []
for i in hrefs:
forwarding_hrefs.append(i.encode('utf-8'))
return Request('http://www.example.com/servlet/av/search&SiteName=page2',
meta={'forwarding_hrefs': response.meta['forwarding_hrefs']},
callback=self.parseJob)
def parseJob(self, response):
print response,">>>>>>>>>>>"
結果:
2012-07-18 17:29:15+0530 [example] DEBUG: Crawled (200) <GET http://www.example.com/servlet/av/search&SiteName=page1> (referer: None)
2012-07-18 17:29:15+0530 [MemorialReqionalHospital] ERROR: Spider error processing <GET http://www.example.com/servlet/av/search&SiteName=page2>
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/twisted/internet/base.py", line 1167, in mainLoop
self.runUntilCurrent()
File "/usr/lib64/python2.7/site-packages/twisted/internet/base.py", line 789, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 361, in callback
self._startRunCallbacks(result)
File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 542, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/home/local/user/project/example/example/spiders/example_spider.py", line 36, in parse
meta={'forwarding_hrefs': response.meta['forwarding_hrefs']},
exceptions.KeyError: 'forwarding_hrefs'
私がやろうとしているのは、すべての href タグを収集していることです。
http://www.example.com/servlet/av/search&SiteName=page1
次のリクエストでこれを配置してforward_hrefs
呼び出す(次のメソッドでこのリストforward_hrefs
を使用したい)forward_urls
http://www.example.com/servlet/av/search&SiteName=page2
また、ページ2のhrefタグをforward_urlsに追加し、これをループしてforward_hrefs
、各hrefタグのリクエストを生成したいと考えています。これは私の考えですが、上記のようにエラーが表示されています。アイテムをコピーします。forward_hrefs
リストをparse
メソッドからメソッドにコピーする方法を教えてくださいparseJob
。
forward_hrefs
最後に、私の意図は、リストをparse
メソッドからメソッドにコピーするparseJob
ことです。
うまく説明できたらいいのですが、そうでない場合はお知らせください....
前もって感謝します