码迷,mamicode.com
首页 > 编程语言 > 详细

2017.07.26 Python网络爬虫之Scrapy爬虫框架

时间:2017-07-26 20:26:56      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:ref   时间比较   技术   声明   arm   encoding   first   pack   例子   

1.windows下安装scrapy:cmd命令行下:cd到python的scripts目录,然后运行pip install 命令

技术分享

技术分享

然后pycharmIDE下就有了Scrapy:

技术分享

 在cmd下运行scrapy命令,出错!!!:

技术分享

解决方法:

Python的Lib\site-packages文件夹下新建一个sitecustomize.py:

import sys sys.setdefaultencoding(‘gb2312‘)

再次在cmd下运行scrapy,成功:

技术分享

 

2.Scrapy选择器和XPath和CSS:通过特定的XPath或者CSS表达式来选择HTML文件中的某个部分

(1)XPath是一门用来在XML文件中选择节点的语言,也也可以用在HTML上,是一门在XML文档中查找信息的语言,XPath可以用来在XML文档中对元素和属性进行遍历。

XPath含有超过100个内建的函数,这些函数用于字符串值,数值,日期和时间比较,节点和QName处理,序列处理,逻辑值等等

(2)在XPath中,有7种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档节点(或称为根节点)。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点

做个简单的XML文件:

<superhero>
<class>
<name lang="en">Tony Stark </name>
<alias>Iron Man </alias>
<sex>male </sex>
<birthday>1969 </birthday>
<age>47 </age>
</class>
<class>
<name lang="en">Peter Benjamin Parker </name>
<alias>Spider Man </alias>
<sex>male </sex>
<birthday>unknow </birthday>
<age>unknown </age>
</class>
<class>
<name lang="en">Steven Rogers </name>
<alias>Captain America </alias>
<sex>male </sex>
<birthday>19200704 </birthday>
<age>96 </age>
</class>
</superhero>

技术分享

 

(3)XPath使用路径表达式在XML文档中选取节点:常用的路径表达式如下:

nodeName:选取此节点的所有子节点

/:从根节点选取

//:从匹配选择的当前节点选择文档中的节点,不考虑它们的位置

.:选取当前节点

..:选取当前节点的父节点
@:选择属性

*:匹配任何元素节点

@*:匹配任何属性节点

Node():匹配任何类型的节点

技术分享

 

 (4)XPath选择器如何收集数据:

技术分享

(5)嵌套选择器:

技术分享

 

 

 

3.CSS选择器(层叠样式表):CSS规则由两个主要的部分构成:选择器,以及一条或多条声明

selector{declaration1;declaration2;.......declarationN}

CSS选择器:             例子:

.class          .intro                   选择class="intro"的所有元素

#id              #firstname          选择id="firstname"的所有元素

*                 *                          选择所有元素

element        p                         选择所有<p>元素

element,element    div,p                 选择所有<div>元素和所有<p>元素

element  element      div   p                 选择<div>元素内部的所有p元素

[attribute]                   [target]               选择带有target属性的所有元素

[attribute=value]        [target=_blank]    选择target="_blank"的所有元素

 

4.CSS选择器测试:

技术分享

 

5.其他选择器:

 XPath选择器还有一个.re()方法,用于通过正则表达式来提取数据,然而不同于使用.xpath()或者css(),,re()方法返回unicode字符串的列表。所以。无法构造嵌套的.re()调用

技术分享

 

2017.07.26 Python网络爬虫之Scrapy爬虫框架

标签:ref   时间比较   技术   声明   arm   encoding   first   pack   例子   

原文地址:http://www.cnblogs.com/hqutcy/p/7238439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!