scrapy中的crawlspider
回头看:
之前的代码中,为了实现翻页或者是爬取详情页操作,我们有会很大一部分时间放在了寻找下一页的url地址或者是内容的url地址上面,
这个过程能再简单一点吗?
思路
- 从response中提取所有的a标签对应的url地址
- 自动地构造自己的requests请求 ,发送给引擎
思路优化
我们可以对所有的url地址设置条件,只有满足条件的url地址,我们才发送给引擎,同时能够指定callback函数
crawlspider作用
自动地帮助我们提取url地址,之后呢,把这个url地址拿着去发送请求得到响应,我们只需要指定当前的这个url地址交给哪个函数去处理就可以了。
crawlspider爬虫案例
通过爬取下面的这个网站来学习crawlspider
http://www.xjie.edu.cn/tzgg1.htm
网站简单分析
这个是列表页
这里是详情页
这里是跳转页面的地方
目标
由于只是为了学习crawlspider的使用,所以本次爬虫的重点不在爬取到的内容
只爬取详情页的***标题,以及详情页的url地址***
本次爬虫的重点在于初步学习crawlspider的使用
思路
详情页的url地址和翻页部分的url地址都是非常的明显
所以我们可以通过crawlspider来帮助我们自动地提取url地址
详情页的url地址
第1页:
http://www.xjie.edu.cn/info/1061/13090.htm
http://www.xjie.edu.cn/info/1061/13088.htm
http://www.xjie.edu.cn/info/1061/13087.htm
————————————————————————————————————————————————————————
第2页:
http://www.xjie.edu.cn/info/1061/13055.htm
http://www.xjie.edu.cn/info/1061/13053.htm
http://www.xjie.edu.cn/info/1061/13048.htm
翻页部分的url地址
第1页
http://www.xjie.edu.cn/tzgg1.htm
2
http://www.xjie.edu.cn/tzgg1/39.htm
http://www.xjie.edu.cn/tzgg1/40.htm
3
http://www.xjie.edu.cn/tzgg1/38.htm
4
http://www.xjie.edu.cn/tzgg1/37.htm
生成一个crawlspider
scrapy startproject xjie
cd xjie
scrapy genspider -t crawl notice xjie.edu.cn # 生成一个crawlspider
crawlspider爬虫代码解读
spiders.notice.py
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class NoticeSpider(CrawlSpider):
# 继承的父类不一样了
# 之前继承的父类是 scrapy.spider
name = 'notice' # 爬虫名字
allowed_domains = ['xjie.edu.cn'] # 允许爬取的范围
start_urls &