response.url 如何知道我们请求的是哪个网址?(刮擦)


class PostsSpider(scrapy.Spider):
name = "posts"
start_urls = ["https://blog.scrapinghub.com/pages/1/",
"https://blog.scrapinghub.com/pages/2/"]
def parse(self, response):
page=response.url.split('/')[-1]

我刚开始使用Scrapy,我对最后一行写response.url.split的地方感到非常困惑。我知道它告诉url从后向拆分1个位置,但我似乎不明白response.url是如何知道我们请求的url的,因为我们的url在变量"start_urls"下,但我们没有重新定义"start_urls"。

请注意,在定义类时,您将创建scrapy.Spider的子类,从而继承父类的方法和属性。

class PostsSpider(scrapy.Spider):

这个父类有一个名为start_requests(源代码(的方法,它将使用类变量start_urls中定义的URL来创建请求。当创建一个Request对象时,它携带一个回调函数。这是当Scrapy Engine收到请求响应时将调用的函数。

默认的回调函数称为parse,这就是为什么您需要实现一个名为parse的函数,该函数将解析您的spider中的响应。

当被调用时,这个回调函数会接收一个名为response的参数。这只不过是一个对象,包含有关请求响应的所有信息,包括您发出请求的URL。(response.url属性(

最新更新