欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
一、基本概念说明
Scrapy数据解析主要有两个大类:xpath() 和 css() ,今天这篇文章主要讲解xpath如何解析我们想获取的页面数据。同时Scrapy还给我们提供自己的数据解析方法,即Selector(选择器),Selector是一个可独立使用的模块,我们可以用Selector类来构建一个选择器对象,然后调用它的相关方法如xpaht(), css()等来提取数据,它的常用写法如下:
1 response.selector.css() #这里的response就是我们请求页面返回的响应2 response.selector.xpath()#可简写为(因为这两个解析的方法太通用了,所以就直接在response上面支持了这两个解析方法)3 response.css()4 response.xpath()5 其中response.xpath() 这个数据解析方法是今天的主角。
Scrapy Shell 主要用于测试Scrapy项目中命令是否生效,可在bash下直接执行,这里我们通过使用Scrapy Shell来验证学习选择器提取网页数据,使用的是在windows下 cmd 命令行下执行此命令 scrapy shell http://lab.scrapyd.cn/page/1/ 来演示。
二、Scrapy Shell 提取数据演示
win+r 输入 cmd 回车—》进入到windows 交互命令行界面,输入:
1
2 C:\Users\tdcengineer>scrapy version3 d:\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: HOME4 ScrapyDeprecationWarning5 Scrapy 2.2.06 如果此命令执行不成功,就需要自己去配置环境变量了。7
8 执行如下命令:9 C:\Users\tdcengineer>scrapy shell http://lab.scrapyd.cn/page/1/10 这是返回的信息:11 [s] Available Scrapy objects:12 [s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc)13 [s] crawler
14 [s] item {}15 [s] request
16 [s] response <200http://lab.scrapyd.cn/page/1/>
17 [s] settings
18 [s] spider
19 [s] Useful shortcuts:20 [s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)21 [s] fetch(req) Fetch a scrapy.Request and update local objects22 [s] shelp() Shell help (print this help)23 [s] view(response) View response in a browser24 >>>
Step1:// 与 / 的使用,//表示文档下面的所有节点元素,/ 表示取当前节点的下一级元素
http://lab.scrapyd.cn/page/1/ 以下是本页面的网页源代码片段:
1 >>> response.xpath("//body") #加粗的地方注意一下,它就是取了body下面的所有元素,后面进行了省略展示,返回的是Selector 对象,并存放在list 里面。2 [\n