1.安装
安装scrapy命令:
sudo apt-get install scrapy
或者:
pip install scrapy
2.创建scrapy项目
scrapy startproject 项目名字
3.创建爬虫
切换到spider目录下执行以下命令:
scrapy genspider baidu(爬虫名) baidu.com(域名)
在spider目录下会生成一个baidu.py文件
4.编写爬虫
在baidu.py中修改内容如下:
import scrapy
# 自定义spider类,继承scrapy.spider
class ItcastSpider(scrapy.Spider):
# 爬虫名字
name = 'itcast'
# 允许爬取的范围,防止爬虫爬到别的网站
allowed_domains = ['baidu.com']
# 开始爬取的url地址
start_urls = ['http://wwwbaidu.com']
# 数据提取的方法,接受下载中间件传过来的response
def parse(self, response):
# scrapy的response对象可以直接进行xpath
names = response.xpath('//div[@class="tea_con"]//li/div/h3/text()')
print(names)
# 获取具体数据文本的方式如下
# 分组
li_list = response.xpath('//div[@class="tea_con"]//li')
for li in li_list:
# 创建一个数据字典
item = {}
# 利用scrapy封装好的xpath选择器定位元素,并通过extract()或extract_first()来获取结果
item['name'] = li.xpath('.//h3/text()').extract_first() # 老师的名字
item['level'] = li.xpath('.//h4/text()').extract_first() # 老师的级别
item['text'] = li.xpath('.//p/text()').extract_first() # 老师的介绍
print(item)
# 利用管道pipeline来处理(保存)数据
yield item
4.1修改pipelines.py文件
import json
class BaiduPipeline(object):
# 爬虫文件中提取数据的方法每yield一次item,就会运行一次
# 该方法为固定名称函数
def process_item(self, item, spider):
print(item)
4.2在settings.py设置开启pipeline
ITEM_PIPELINES = {
'myspider.pipelines.BaiduPipeline': 400
}
5.运行scrapy
在spider目录下执行一以下命令:
scrapy crawl baidu