0
私はネストしたページを持つWebサイトで練習をしています。私は最も内側のページのコンテンツを掻き集める必要があります。主な解析機能への最も内側のページは、ページを開くだけで、最後のparse関数からアイテムを取得し、メインの解析機能ここPython Scrapyのネストされたページには、最も内側のページのアイテムしか必要ありません。
に繰り越すために多くの解析機能を使用して、私が試したものである
try:
import scrapy
from urlparse import urljoin
except ImportError:
print "\nERROR IMPORTING THE NESSASARY LIBRARIES\n"
class CanadaSpider(scrapy.Spider):
name = 'CananaSpider'
start_urls = ['http://www.canada411.ca']
#PAGE 1 OF THE NESTED WEBSITE GETTING LINK AND JOING WITH THE MAIN LINK AND VISITING THE PAGE
def parse(self, response):
SET_SELECTOR = '.c411AlphaLinks.c411NoPrint ul li'
for PHONE in response.css(SET_SELECTOR):
selector = 'a ::attr(href)'
try:
momo = urljoin('http://www.canada411.ca', PHONE.css(selector).extract_first())
#PASSING A DICTIONARYAS THE ITEM
pre = {}
post = scrapy.Request(momo, callback=self.parse_pre1, meta={'item': pre})
yield pre
except:
pass
#PAGE 2 OF THE NESTED WEBSITE
def parse_pre1(self, response):
#RETURNING THE SAME ITEM
item = response.meta["item"]
SET_SELECTOR = '.clearfix.c411Column.c411Column3 ul li'
for PHONE in response.css(SET_SELECTOR):
selector = 'a ::attr(href)'
momo = urljoin('http://www.canada411.ca', PHONE.css(selector).extract_first())
pre = scrapy.Request(momo, callback=self.parse_pre1, meta={'page_2': item})
yield pre
def parse_info(self, response):
#HERE I AM SCRAPING THE DATA
item = response.meta["page_2"]
name = '.vcard__name'
address = '.c411Address.vcard__address'
ph = '.vcard.label'
item['name'] = response.css(name).extract_first()
item['address'] = response.css(address).extract_first()
item['phoneno'] = response.css(ph).extract_first()
return item
私は間違って何をしているアイテムを継承していますか?
を意味すると思いますが、少し詳しく説明してくださいすることができ、私は –
がparse_pre1 'であなたのコールバックいけないのpythonに新しいです'関数は' callback = self.parse_pre1'の代わりに 'callback = self.parse_info'を参照するべきです – JkShaw