私は3ページに続くスパイダーを構築しようとしています。私はシェルの応答をテストしましたが、一緒に動作していないように見えますが、私はなぜそれがわかりません。スパイダーリンクを辿っていない - 治療
以下の私のコード:
# -*- coding: utf-8 -*-
import scrapy
class CollegiateSpider(scrapy.Spider):
name = 'Collegiate'
allowed_domains = ['collegiate-ac.com/uk-student-accommodation']
start_urls = ['http://collegiate-ac.com/uk-student-accommodation/']
# Step 1 - Get the area links
def parse(self, response):
for city in response.xpath('//*[@id="top"]/div[1]/div/div[1]/div/ul/li/a/text').extract():
yield scrapy.Request(response.urljoin("/" + city), callback = self.parse_area_page)
# Step 2 - Get the block links
def parse_area_page(self, response):
for url in response.xpath('//div[3]/div/div/div/a/@href').extract():
yield scrapy.Request(response.urljoin(url), callback=self.parse_unitpage)
# Step 3 Get the room links
def parse_unitpage(self, response):
for url in response.xpath('//*[@id="subnav"]/div/div[2]/ul/li[5]/a/@href').extract():
yield scrapy.Request(response.urljoin(final), callback=self.parse_final)
# Step 4 - Scrape the data
def parse_final(self, response):
pass
私はthis answerあたりとしてCrawlspider
に変更しようとしたが、それは助けていないようでした。
私は現在、クモのデバッグ方法を検討していますが、それに苦しんで、ここでも意見を得ることは有益だろうと考えました。
output.csv
で、最終的なURLを保存します。多分問題を見つけるのに役立つでしょう。あなたは正しいURLを作成するために 'response.urljoin()'を表示することもできます。 – furasなぜこの変数を持たないなら 'parse_unitpage'の' response.urljoin(final) 'に' final'を使っていますか?エラーメッセージが表示されませんでしたか? – furas
'parse()の' xpath() 'は結果を返しません。 'div/div/div /'の代わりにクラス名を使うことはできませんか? – furas