Scrapy入门
- scrapy是框架 类似于车子 会开车
- 采用异步框架 实现高效的网络采集
- 最强大的框架 没有之一
Scrapy安装
- pin install scrapy --->出现错误提示:VC++14.0 Twisted
解决方法:离线安装 pip install xxx.whl文件
- scrapy bencn 运行的时候报错 ---->win32
解决方法:pip install pywin32
Scarpy入门案例
1、创建项目
scrapy startproject xxx(项目名字)
2、创建爬虫
scrapy genspider 爬虫名字 网站域名
注意事项:
*爬虫名字和项目名字不能相同
*网站域名是允许爬虫采集的域名
- baidu.com
3、解释爬虫文件
1 # -*- coding: utf-8 -*- 2 import scrapy 3 4 #创建爬虫类 并且继承自scrapy.Spider -->最基础的类,另外几个类都是继承自这个类 5 class XiciwangSpider(scrapy.Spider): 6 name = 'xiciwang' #爬虫名字,必须唯一 7 allowed_domains = ['www.xicidaili.com'] #允许采集的域名 8 start_urls = ['https://www.xicidaili.com/nn/'] #开始采集的网站 9 10 #解析响应数据,提取数据或者网址等,就是源码 11 def parse(self, response): 12 pass
4、提取数据方法
-正则表达式提取
-xpath提取
-css提取
5、运行爬虫
-scrapy crawl爬虫名称
6、例子
1 # -*- coding: utf-8 -*- 2 import scrapy 3 4 #创建爬虫类 并且继承自scrapy.Spider -->最基础的类,另外几个类都是继承自这个类 5 class XiciwangSpider(scrapy.Spider): 6 name = 'xiciwang' #爬虫名字,必须唯一 7 allowed_domains = ['www.xicidaili.com'] #允许采集的域名 8 start_urls = ['https://www.xicidaili.com/nn/'] #开始采集的网站 9 10 #解析响应数据,提取数据或者网址等,就是源码 11 def parse(self, response): 12 13 #提取数据 14 shuju = response.xpath('//tr') 15 for i in shuju: 16 ip = i.xpath('./td[2]/text()').get() 17 duankou = i.xpath('./td[3]/text()').get() 18 print(ip,duankou) 19 20 #翻页操作 21 fangye = response.xpath("//div/a[@class='next_page']/@href").get() 22 if fangye: 23 print(fangye) 24 #拼接网址 25 # next_url = 'https://www.xicidaili.com/'+fangye 26 next_url = response.urljoin(fangye) 27 #发出请求Request callback 是回调函数 就是将请求得到的响应交给自己处理 28 yield scrapy.Request(next_url,callback=self.parse)