当我们抓取网页时,最常见任务就是从HTML源码中提取数据,可是怎么提取数据呢?当然就是用选择器了。本节课主要介绍CSS,Xpath,正则表达式,pyquery四种选择器。
四大选择器
Scrapy 提取数据有自己的一套机制。它们被称作选择器(seletors),通过特定的 Xpath 、 CSS 表达式或者正则表达式来选择 HTML 文件中的某个部分的数据。
我们常用的选择器有四种:CSS选择器,Xpath选择器,正则表达式,pyquery选择器。Scrapy内置了三种选择器,分别是CSS选择器,Xpath选择器,正则表达式
,使用pyquery需要另外安装pyquery库
CSS的使用方法
CSS 是一门将 HTML 文档样式化的语言。选择器由它定义,并与特定的 HTML 元素的样式相关联。在CSS中,选择器是一种模式,用于选择需要添加样式的元素
应用给定的CSS选择器时,返回 SelectorList 的一个实例,query 是一个包含CSS选择器的字符串 该方法可以通过 response.css() 调用
CSS3选择器
CSS选择器使用示例:
我们使用一个自定义的网页源码演示css选择器的用法
html源码如下:
<body>
<ul>
<li class="top">
<div>li的div</div>
</li>
<li class="top">
<div>
<div>li的div的div</div>div>
</div>
</li>
<li>
<p>li的p</p>
</li>
<li>
<a>
<div id="li_a_div">li的a的div</divid>
</a>
</li>
</ul>
</body>
打开同级目录下的HTML文件,所获取的sel变量是Selector变量,可以直接使用sel.css()对其进行选择:
from scrapy import Selector
with open('test.html' , encoding='utf-8') as f:
text = f.read()
sel = Selector(text=text)
选择 class='top'的元素
: