私はスクレイピーを初めて使用し、不動産のウェブサイトから情報を取得しようとしています。このサイトには、検索フォーム (メソッド GET) を備えたホームページがあります。start_requests (recherche.php) で結果ページに移動しようとしており、アドレス バーに表示されるすべての get パラメータを formdata パラメータに設定しています。持っていたクッキーもセットアップしましたが、彼も機能しませんでした..
ここに私のクモがあります:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import FormRequest, Request
from robots_immo.items import AnnonceItem
class ElyseAvenueSpider(BaseSpider):
name = "elyse_avenue"
allowed_domains = ["http://www.elyseavenue.com/"]
def start_requests(self):
return [FormRequest(url="http://www.elyseavenue.com/recherche.php",
formdata={'recherche':'recherche',
'compteurLigne':'2',
'numLigneCourante':'0',
'inseeVille_0':'',
'num_rubrique':'',
'rechercheOK':'recherche',
'recherche_budget_max':'',
'recherche_budget_min':'',
'recherche_surface_max':'',
'recherche_surface_min':'',
'recherche_distance_km_0':'20',
'recherche_reference_bien':'',
'recherche_type_logement':'9',
'recherche_ville_0':''
},
cookies={'PHPSESSID':'4e1d729f68d3163bb110ad3e4cb8ffc3',
'__utma':'150766562.159027263.1340725224.1340725224.1340727680.2',
'__utmc':'150766562',
'__utmz':'150766562.1340725224.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)',
'__utmb':'150766562.14.10.1340727680'
},
callback=self.parseAnnonces
)]
def parseAnnonces(self, response):
hxs = HtmlXPathSelector(response)
annonces = hxs.select('//div[@id="contenuCentre"]/div[@class="blocVignetteBien"]')
items = []
for annonce in annonces:
item = AnnonceItem()
item['nom'] = annonce.select('span[contains(@class,"nomBienImmo")]/a/text()').extract()
item['superficie'] = annonce.select('table//tr[2]/td[2]/span/text()').extract()
item['prix'] = annonce.select('span[@class="prixVignette"]/span[1]/text()').extract()
items.append(item)
return items
SPIDER = ElyseAvenueSpider()
スパイダーを実行すると問題はありませんが、読み込まれたページは適切ではありません (「検索を指定してください」と表示され、結果が得られません..)
2012-06-26 20:04:54+0200 [elyse_avenue] INFO: Spider opened
2012-06-26 20:04:54+0200 [elyse_avenue] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2012-06-26 20:04:54+0200 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2012-06-26 20:04:54+0200 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2012-06-26 20:04:54+0200 [elyse_avenue] DEBUG: Crawled (200) <POST http://www.elyseavenue.com/recherche.php> (referer: None)
2012-06-26 20:04:54+0200 [elyse_avenue] INFO: Closing spider (finished)
2012-06-26 20:04:54+0200 [elyse_avenue] INFO: Dumping spider stats:
{'downloader/request_bytes': 808,
'downloader/request_count': 1,
'downloader/request_method_count/POST': 1,
'downloader/response_bytes': 7590,
'downloader/response_count': 1,
'downloader/response_status_count/200': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2012, 6, 26, 18, 4, 54, 924624),
'scheduler/memory_enqueued': 1,
'start_time': datetime.datetime(2012, 6, 26, 18, 4, 54, 559230)}
2012-06-26 20:04:54+0200 [elyse_avenue] INFO: Spider closed (finished)
2012-06-26 20:04:54+0200 [scrapy] INFO: Dumping global stats:
{'memusage/max': 27410432, 'memusage/startup': 27410432}
ご協力いただきありがとうございます !