『scrapy爬虫』03. 爬取多个页面(详细注释步骤)
在实际的爬虫任务中,我们经常需要爬取同一个网站的多个页面。例如,电商网站的商品列表页、新闻网站的文章列表页等。Scrapy提供了强大的机制来处理这种多页面爬取。
<a>
标签。
import scrapy
class BooksSpider(scrapy.Spider):
name = 'books'
start_urls = ['http://books.toscrape.com/']
def parse(self, response):
for book in response.css ('article.product_pod'):
yield {
'title': book.css('h3 a::attr(title)').get(),
'price': book.css ('.price_color::text').get(),
}
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.pa rse)
start_urls
: 定义爬取的起始URL。parse
: 解析响应的函数。response.css
: 使用CSS选择器提取数据。yield
: 生成一个Item,代表提取到的数据。response.follow
: 递归调用parse
函数,跟随下一页链接继续爬取。parse
函数,实现了对多个页面的爬取。
import scrapy
class BooksSpider(scrapy.Spider):
name = 'books'
start_urls = ['http://books.toscrape.com/']
def parse(self, response):
for book in response.css ('article.product_pod'):
yield {
'title': book.css('h3 a::attr(title)').get(),
'price': book.css ('.price_color::text').get(),
}
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
next_page_url = response.urljoin(next_page) # 构造完整的URL
yield scrapy.Request(next_page_url, callback=self.parse)
通过以上步骤,我们可以使用Scrapy轻松地爬取多个页面。掌握了这些基本技巧,你可以应对更多的爬虫任务。
想了解更多? 可以提出更具体的问题,例如:
我将尽力为你解答。