Мой паук выглядит следующим образом /;
class ScrapeMovies(scrapy.Spider):
start_urls = [
'https://www.trekearth.com/members/page1.htm?sort_by=md'
]
def parse(self, response):
for row in response.xpath('//table[@class="member-table"]//tr[position() > 1]'):
item = loopitem()
website = row.xpath('./td[2]//a/@href/text()').extract_first()
item['name'] = row.xpath('./td[2]//a/text()').extract_first()
yield item
# This part is responsible for scraping all of the pages on a start url commented out for convinience
# next_page=response.xpath('//div[@class="page-nav-btm"]/ul/li[last()]/a/@href').extract_first()
# if next_page is not None:
# next_page=response.urljoin(next_page)
# yield scrapy.Request(next_page, callback=self.parse)
Что он делает, так как знает, что очищает таблицу (см. Начальный URL).Я хочу, чтобы он затем перешел по ссылке (столбец имени участника) и затем извлек некоторую информацию из этой ссылки (ссылка, например, https://www.trekearth.com/members/monareng/) и вернула ее как элемент.
Как мне подойти к этому?
Если что-то неясно, пожалуйста, не стесняйтесь просить разъяснения.
РЕДАКТИРОВАТЬ: Теперь мой код выглядит следующим образом (однако все еще не работает):
class ScrapeMovies(scrapy.Spider):
name='final'
start_urls = [
'https://www.trekearth.com/members/page1.htm?sort_by=md'
]
def parse(self, response):
for row in response.xpath('//table[@class="member-table"]//tr[position() > 1]'):
item = FinalItem()
website = row.xpath('./td[2]//a/@href/text()').extract_first()
item['name'] = row.xpath('./td[2]//a/text()').extract_first()
request = scrapy.Request(website,
callback=self.parse_page2)
request.meta['item'] = item
return request
def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
item['groups'] = response.xpath('//div[@class="groups-btm"]/ul/li/text()').extract_first()
return item