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
属性(