我试图通过覆盖start_requests
将起始URL作为元数据附加到请求中,但是蜘蛛似乎拒绝抓取起始URL旁边的其他页面。有人知道如何在请求中包含元数据并抓取起始URL之外的页面吗?
谢谢你
class TSpider(CrawlSpider):
name = 't'
allowed_domains = ['books.toscrapes.com']
start_urls = ['https://books.toscrapes.com']
rules = (
Rule(LinkExtractor(allow=[r'.*page.*']), callback='parse_item', follow=True),
)
def start_requests(self):
for url in self.start_urls:
yield Request(url, callback=parse_item, meta={'start_url': url})
def parse_item(self, response):
item = {}
item['title'] = response.xpath('//head/title/text()').extract()
item['url'] = response.url
item['start_url'] = response.meta['start_url']
yield item
1条答案
按热度按时间ohtdti5x1#
您的问题是
start_requests
方法中的回调,请删除它。如果要将起始URL添加到每个请求,可以执行以下操作之一:
**方法1:**使用process_request(比方法2更好)。
**方法2:**覆写要求以遵循方法。