scrapy
ubuntu安装:
- python3安装依赖库:sudo apt-get install python3 python3-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
- 通过pip 安装 Scrapy 框架命令:sudo pip3 install scrapy
基本流程:
- startproject 创建一个新工程–scrapy startproject MySpider
- 进入项目目录 cd MySpider
- 在当前项目里创建爬虫: scrapy genspider atguigu ‘www.atguigu.com’
- 运行爬虫: scrapy crawl name
scrapy项目:自定义爬虫程序
- 需要引入item字段:from 项目名.items import 项目Item
- name:与爬虫程序相同
- allowed_domains : 定义爬取的域名(可以省略或者写多个)
- start_urls 爬取的起始网址
- parse_item方法中写解析数据的代码,获取数据方式
text = response.xpath('//div[@class="name"]/text()').extract()[0]
- item需要创建一个实例化对象
item = nameItem()
- 将数据放入item
item['title']=title
yirld item
将每条数据返回
scrapy项目:items
- MyscrapyItem类中定义要输出的变量 如:
teacher_name = scrapy.Field()
scrapy项目:settings:
- 配置图片保存路径 : IMAGES_STORE = “./Image”
- ROBOTSTXT_OBEY = True 是否遵守爬虫协议
- ITEM_PIPELINES 填写pipelines的路径,自定义输出管道 数字值越小优先级越高
- COOKIES_ENABLED = False#是否启用cookie,默认是启用,要设置不起来,防止别人知道我们
- LOG_FILE=’name.txt’ 日志保存文件
- LOG_LEVEL=’DEBUG’ 日志打印级别
scrapy项目:pipelines:
- 自定义输出管道
- 自定义函数需要带(self,spider)两个参数
def open_spider(self, spider):
- process_item方法必须写,而且不能修改名称,item是对应的数据,spider是爬虫
def close_spider(self,spider):
使用pycharme运行爬虫
在项目根目录下创建一个py文件name任意,代码:
- from scrapy import cmdline
- cmdline.execute(“scrapy crawl atguigu”.split()) 参数为终端运行代码相同
创建规则爬虫
scrapy genspider -t crawl spider_name xx.com
- spider_name.py:
rules: 规则,可放多个规则的列表或元组
rules = (
Rule(LinkExtractor(allow=r’Items/’), callback=’parse_item’, follow=True),
第一个参数是链接提取器(allow是正则,为空则取所有连接,deny取反)
第二个参数是回调
第三个参数是:是否允许深度爬取(follow=False只爬取当前页面)
)