【发布时间】:2018-05-16 17:54:45
【问题描述】:
我的蜘蛛看起来像这样/;
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)
它的作用是知道它会刮桌子(请参阅起始网址)。我希望它转到链接(成员名称列),然后从该链接中提取一些信息(链接例如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
【问题讨论】:
标签: python web web-scraping scrapy