1 回答
TA贡献1811条经验 获得超4个赞
每个选项卡都加载一个单独的页面/url。我想你认为既然它被标记为同一页面。因此,您必须从第一页收集所需的数据,请求第二页获取数据,然后请求第三页。您可以通过在元属性中传递项目来保留上一页的数据。我就是这样做的。请注意,链接的代码是正确的,您必须为每个页面上的数据点创建选择器。
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 关注
- 111 浏览
添加回答
举报