1
基本概念说明
Scrapy数据解析主要有两个大类:xpath() 和 css() ,今天这篇文章主要讲解xpath如何解析我们想获取的页面数据。同时Scrapy还给我们提供自己的数据解析方法,即Selector(选择器),Selector是一个可独立使用的模块,我们可以用Selector类来构建一个选择器对象,然后调用它的相关方法如xpaht(), css()等来提取数据,它的常用写法如下:
response.selector.css() #这里的response就是我们请求页面返回的响应response.selector.xpath()#可简写为(因为这两个解析的方法太通用了,所以就直接在response上面支持了这两个解析方法)response.css()response.xpath()其中response.xpath() 这个数据解析方法是今天的主角。
Scrapy Shell 主要用于测试Scrapy项目中命令是否生效,可在bash下直接执行,这里我们通过使用Scrapy Shell来验证学习选择器提取网页数据,使用的是在windows下 cmd 命令行下执行此命令 scrapy shell http://lab.scrapyd.cn/page/1/ 来演示。
2
Scrapy Shell 提取数据演示
win+r 输入 cmd 回车—》进入到windows 交互命令行界面,输入:
C:\Users\tdcengineer>scrapy versiond:\program files\python36\lib\site-packages\scrapy\utils\project.py:94: ScrapyDeprecationWarning: Use of environment variables prefixed with SCRAPY_ to override settings is deprecated. The following environment variables are currently defined: HOMEScrapyDeprecationWarningScrapy 2.2.0如果此命令执行不成功,就需要自己去配置环境变量了。执行如下命令:C:\Users\tdcengineer>scrapy shell http://lab.scrapyd.cn/page/1/ 这是返回的信息:[s] Available Scrapy objects:[s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc)[s] crawler object at 0x00000270455E3CC0>[s] item {}[s] request //lab.scrapyd.cn/page/1/>[s] response <200 http://lab.scrapyd.cn/page/1/>[s] settings object at [s] spider 'default' at [s] Useful shortcuts:[s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)[s] fetch(req) Fetch a scrapy.Request and update local objects[s] shelp() Shell help (print this help)[s] view(response) View response in a browser>>>
Step1: // 与 / 的使用,//表示文档下面的所有节点元素,/ 表示取当前节点的下一级元素http://lab.scrapyd.cn/page/1/ 以下是本页面的网页源代码片段:
>>> response.xpath("//body") #加粗的地方注意一下,它就是取了body下面的所有元素,后面进行了省略展示,返回的是Selector 对象,并存放在list 里面。['//body' data=