登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
做爬虫,就是要读懂网页内容,获取需要的信息;
网页文档,本质是个树形结构,跟我们电脑里,大文件夹里有中文件夹,中文件夹里又有小文件夹这样
如何定位网页文档的节点,是个基本问题。
最原始的手段是用urllib2请求网得到结果,然后用re取得内容,
当然,这很傻!
scrapy提取数据使用选择器(selectors),选择器有2个:XPath,CSS
那这2个有啥区别呢?
1、CSS更简洁,速度快,效率高
2,CSS不支持文本搜索,XPATH支持
3,xpath支持的函数特别多,CSS比较少,所以在复杂元素查找时候,xpath反而更加简洁
所以,当查找元素比较简单,用css;如果复杂,用xpath比较好
xpath更为强大些,
它是处理xml的,自然也能处理html
XPath含100多个函数,用于处理字符串,数值,日期,时间,节点,QName,序列,逻辑值等。
XPath有7种节点:元素,属性,文本,命名空间,处理指令,注释,文档节点/根节点
xml文档被作为[节点树]对待,树根被称为文档节点/根节点(网页文档的根节点就是<html>)
节点有父子关系,同级的叫“同胞节点”
以下是3种定位方法及其基本语法:
方法1:XPath使用[路径表达式]在xml文档中选择节点
路径表达式
| 描述
| nodeName
| 选择此节点的所有子节点
| /
| 从根节点选取
| //
| 从匹配选择的当前节点选择文档中的节点,不考虑位置
| .
| 选择当前节点
| ..
| 选择当前节点的父节点
| @
| 选取属性
| *
| 匹配任何元素节点
| @*
| 匹配任何属性节点
| Node()
| 匹配任何类型的节点
|
方法2:css选择器
方法3:selenium自带的18个函数
find_element(self,by='id',value=None) | find_elements(self,by='id',value=None) | find_element_by_class_name(self,name) | find_elements_by_class_name(self,name) | find_element_by_css_selector(self,css_selector) | find_elements_by_css_selector(self,css_selector) | find_element_by_id(self,id_) | find_elements_by_id(self,id_) | find_element_by_link_text(self,link_text) | find_elements_by_link_text(self,text) | find_element_by_name(self,name) | find_elements_by_name(self,name) | find_element_by_partial_link_text(self,link_text) | find_elements_by_partial_link_text(self,link_text) | find_element_by_tag_name(self,name) | find_elements_by_tag_name(self,name) | find_element_by_xpath(self,xpath) | find_elements_by_xpath(self,xpath) |
selenium定位函数的说明: 左侧和右侧的区别仅在于element的单复数; 左侧9个返回第一个符合要求的element, 右侧9个返回一个列表,包含所有符合要求的element; 第一行2个函数配合参数可以取代其他函数,例如: find_element(by='id',value=’abc’) 等效于 find_element_by_id(‘abc’) 如果仅仅是为了获取信息的位置,还是以下2个函数比较方便: find_element_by_xpath find_element_by_css_selector
定位网页中的信息,还可使用BeautifulSoup4,这个我还没学,暂不表 |