scrapy
安装
- pip install scrapy
创建
- scrapy startproject projectName
- scrapy.cfg 配置文件
- projectName/
- python 后续编写的代码
- items.py 项目的items文件
- pipelines.py 项目的pipelines文件
- settings.py 项目的设置文件
- spiders/
- spidersNameOne.py 放置spiders代码的目录
- spidersNameTwo.py
定义item
- 在items.py中
class TestItem(scrapy.Item): # 定义你需要的字段 name = scrapy.Field() description = scrapy.Field()
编写爬虫
- 在spider目录下新建
- name为spiderName
- start_urls需要获取的url列表
- parse()返回的reponse传入,进行数据存储处理,生成下一个url等
- eg:
def parse(self, reponse): #对返回的reponse进行操作,提取保存等 #生成进一步需要的url name = "" description = ""
运行
- scrapy crawl name
Scrapy Selectors
- response.xpath('路径')
- /html/body/img <body>的所有<img>标签元素
- /html/body/img/text() <img>元素里面的内容
- //<img> 选择所有的<img>标签
- //div[@class="content"]选择所有类名content的<div>
- 四个常用方法(返回列表)
- xpath()传入xpath表达式,返回该表达式所对应的所有节点的selector list列表
- css()传入CSS表达式,返回该表达式所对应的所有节点的selector list列表
- extract()序列化该节点为unicode字符串并返回list(习惯放在最后序列化)
- re()根据传入的正则表达式对数据进行提取,返回unicode字符串list列表
item对象
- item对象是一个用来返回的自定义的python字典
- 使用技巧
- from spider.items import TestItem #导入
- item = TestItem() #实例化
- item[字段]赋值 #一般用for循环
- yield item
保存数据
- scrapy crawl spiderName -o fileName.json
工具命令
- 全局
- startproject
- scrapy startproject projectName
- 创建一个新项目
- settings
- scrapy settings [options]
- 获取scrapy设定
- runspider
- scrapy runspider <spider_file.py>
- 运行不在项目中的spider
- shell
- scrapy shell
- 打开shell
- fetch
- scrapy fetch https://i.cnblogs.com
- 获取页面
- view
- scrapy view https://i.cnblogs.com
- 在浏览器打开查看获取到的页面
- version
- scrapy version [-v]
- 查看版本
- startproject
- 局部项目内
- crawl
- scrapy crawl <spider> #程序里的name
- 运行脚本
- check
- scrapy check [-l] <spider>
- 运行contract检查
- list
- edit
- scrapy edit <spider>
- 编辑
- parse
- scrapy parse url [options]
- 获取url并相应spider处理
- genspider
- scrapy genspider [-t template] spiderName i.cnblogs.com
- 创建一个新脚本
- deploy
- scrapy deploy [ <target:project> | -l <target> | -L ]
- 部署到服务器上
- bench
- crawl
未完待续~~