1 回答

TA貢獻1811條經驗 獲得超4個贊
每個選項卡都加載一個單獨的頁面/url。我想你認為既然它被標記為同一頁面。因此,您必須從第一頁收集所需的數據,請求第二頁獲取數據,然后請求第三頁。您可以通過在元屬性中傳遞項目來保留上一頁的數據。我就是這樣做的。請注意,鏈接的代碼是正確的,您必須為每個頁面上的數據點創(chuàng)建選擇器。
def profile(self, response):
item = {}
item["field1"] = response.xpath('//xpath').get()
# Get first link for reviews
review_link = response.css('#reviews_tab a::attr(href)').get()
yield scrapy.Request(response.urljoin(review_link), callback=self.parse_reviews, meta={'item': item})
def parse_reviews(self, response):
item = response.meta['item']
item["field2"] = response.xpath
directions_link = response.css('#directions_tab a:attr(href)').get()
yield scrapy.Request(response.urljoin(directions_link), callback=self.parse_directions, meta={'item': item})
def parse_directions(self, response):
item = response.meta['item']
item['directions'] = response.xpath
yield item
- 1 回答
- 0 關注
- 160 瀏覽
添加回答
舉報