所在位置:
- 首页
- 正文
用scrapy爬取向下滚动更多内容的网站
今天我们来爬取一个不停向下滚动同时会展示更多内容的网站,这种网站在不停向下滚动的过程中会不停地调用接口,我们可以根据这些接口的规则来获取数据,后面我们也可以使用 Selenium 通过控制浏览器来模拟真实用户的操作以获取数据。
预备工作
- python2.7.10
- scrapy 1.4.0
- virtualenv 15.2.0
创建项目
scrapy startproject scrollqutoes
cd scrollqutoes
scrapy genspider quotescroll quotes.toscrape.com
修改创建的爬虫类
- 进入到爬虫类的目录
cd scrollquotes/scrollquotes/spiders
- 修改 quotescroll.py 的内容如下
# -*- coding: utf-8 -*-
import scrapy
import json
class QuotescrollSpider(scrapy.Spider):
name = 'quotescroll'
allowed_domains = ['quotes.toscrape.com']
api_url = 'https://quotes.toscrape.com/api/quotes?page={}'
start_urls = [api_url.format(1)]
def parse(self, response):
data = json.loads(response.text)
for item in data['quotes']:
yield {
'author_name': item['author']['name'],
'tags': item['tags'],
'text': item['text']
}
if data['has_next']:
next_page = data['page'] + 1
yield scrapy.Request(url=self.api_url.format(next_page), callback=self.parse)
- 上面代码的思路是先读取第一页接口的数据,然后再判断是否有下一页,如果有的话,就一直爬取下一页,直到没有了下一页为止
运行爬虫
scrapy crawl quotescroll -o blog.json
参考链接
【上一篇】极简的端到端 Scrapy 教程(第三部分)【翻译】
【下一篇】 部署scrapy爬虫