Scrapy是现在应用最为广泛的爬虫框架了,所以我也学习一下基础地使用这个框架。
1:安装及创建环境
安装还是在pycharm下面进行安装
然后用命令scrapy startproject tutorial
来进行项目创建
然后,你自己编写的爬虫内容(我这里是quotes_spider),放在spider文件夹下
整个项目内结构如下
2:编写程序
import scrapy
class QuotesSpider(scrapy.Spider):
#name的作用是定义这个爬虫的名字,在命令行执行的时候可以直接用这个名字而不需要执行py文件
name = 'quotes'
#这里其实是重写了start_requests方法,不用额外写start_urls了
def start_requests(self):
#重写这个函数
urls =[
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
#遍历urls里面所有的地址,并通过回调函数来取回爬到的参数
for url in urls:
yield scrapy.Request(url=url,callback=self.parse)
#定义parse函数,定义爬取哪些数据
def parse(self,response):
for quote in response.css('div.quote'):
yield {
'text':quote.css('span.text::text').extract_first(),
'author':quote.css('small.author::text').extract_first(),
'tags':quote.css('div.tags a.tag::text').extract(),
}
3:运行爬虫
scrapy crawl quotes -o quotes.json
至此,爬取的结果就保存在了quotes.json文件里,内容如图
说实话,为了搞清楚start_requests和parse函数里面的yield原理,起码看了50+的网页。包括了一定量的源码解析,不过还不是特别的清楚,只能说知道了50%。
参考资料如下:
https://www.cnblogs.com/tuohai666/p/8879765.html
http://kaito-kidd.com/tags/%E7%88%AC%E8%99%AB/
https://piaosanlang.gitbooks.io/spiders/09day/scrapyyuan-ma-jie-xi-ff08-si-ff09.html