通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。
生成新请求
首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子链接,对子链接进行解析出来拿到我们的文章内容。大概思路有了,下面我们直接实操下。
开始前,这里要介绍两个后面可能会用到的函数。
scrapy.Request
用于生成一个新的请求,并指定回调函数,但是需要提供一个完整的绝对链接。这里可以使用urljoin()
函数进行url的拼接,组成完整的url。我们看下官方的例子。
import scrapy
class 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