糗事百科之抓取多个页面
修改之前的 qsbk.py
文件
# -*- coding: utf-8 -*-
import scrapy
# 从根目录 导入 item 类
from spider.items import SpiderItem
class QsbkSpider(scrapy.Spider):
name = 'qsbk'
allowed_domains = ['www.qiushibaike.com']
start_urls = ['https://www.qiushibaike.com/text/page/1/']
base_domain = "https://www.qiushibaike.com"
def parse(self, response):
contents = response.xpath('//div[@class="col1 old-style-col1"]/div')
for duanzi in contents:
author = duanzi.xpath(".//h2/text()").get().strip()
content = duanzi.xpath('.//div[@class="content"]//text()').getall()
content = ' '.join(content).strip()
item = SpiderItem(author=author, content=content)
yield item
# 查找下页的 url
# 查找最后一个 li 标签的 href 属性,
# 若为空,表示当前页为最后一页,返回
# 否在, 请求下页的 url 获取内容
next_url = response.xpath('//div[@class="col1 old-style-col1"]'
'/ul/li[last()]/a/@href').get()
if not next_url:
return
else:
yield scrapy.Request(self.base_domain + next_url, callback=self.parse)
查找下页的 url 利用 scrapy.Request()
请求下一页,并利用回调函数进行解析html