通過前面幾篇文章,已經了解了如何去爬取網頁內容并存儲到數據庫,但是目前只是存儲了一個頁面的內容,現在想要獲取每篇文章鏈接內的文章內容,我們來看看怎么獲取。
生成新請求
首先我們肯定要先拿到鏈接,所以第一步都獲取文章標題和鏈接肯定少不了,然后再爬取獲取到到子鏈接,對子鏈接進行解析出來拿到我們的文章內容。大概思路有了,下面我們直接實操下。
開始前,這里要介紹兩個后面可能會用到的函數。
scrapy.Request
用于生成一個新的請求,并指定回調函數,但是需要提供一個完整的絕對鏈接。這里可以使用urljoin()
函數進行url的拼接,組成完整的url。我們看下官方的例子。
import scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"start_urls = ["https://quotes.toscrape.com/page/1/",]def parse(self, response):for quote in response.css("div.quote"):yield {"text": quote.css("span.text::text").get(),"author": quote.css("small.author::text").get(),"tags": quote.css("div.tags a.tag::text").getall(),}next_page = response.css("li.next a::attr(href)").get()if next_page is not None:next_page